流水作业调度
int FlowShop(int n, int a, int b, int c) {
class Jobtype {
public:
int key, index;
bool job;
int operator <= (Jobtype a) const {
return key <= a.key;
}
};
Jobtype *d = new Jobtype[n];
for (int i = 0; i < n; i++) {
d[i].key = a[i] > b[i] ? b[i] : a[i];
d[i].job = a[i] <= b[i];
d[i].index = i;
}
std::sort(d, d + n);
int j = 0, k = n - 1;
for (int i = 0; i < n; i++) {
if (d[i].job) {
c[j++] = d[i].index;
} else {
c[k--] = d[i].index;
}
}
j = a[c[0]];
k = j + b[c[0]];
for (int i = 1; i < n; i++) {
j += a[c[i]];
k = j > k ? j + b[c[i]] : k + b[c[i]];
}
delete[] d;
return k;
}
最后更新:
2024年1月2日 21:37:12
创建日期: 2024年1月2日 19:47:42
创建日期: 2024年1月2日 19:47:42