int update_dev(int n, int D, int r[][8], int m[][8], int u[][8], bool p[]) {
int i, t, k;
int optg, rem;
int(*f)[7] = new int[8][7];
bool(*x)[7] = new bool[7][7];
for (i = 1; i <= n; i++) {
f[n + 1][i] = 0;
}
for (i = n; i >0; i--) {
for (t = 1; t <= i; t++) {
if (i > t)
f[i][t] = r[i][0] - m[i][0] - u[i - t][t] + f[i + 1][1];
else
f[i][t] = r[i][0] - m[i][0] - u[0][t - 1 + D] + f[i + 1][1];
x[i][t] = true;
if (i > t)
rem = r[i - t][t] - m[i - t][t] + f[i + 1][t + 1];
else
rem = r[0][t-1+D] - m[0][t-1+D] + f[i + 1][t + 1];
if (f[i][t] < rem) {
f[i][t] = rem; x[i][t] = false;
}
}
}
t = 1;
for (i = 1; i <= n; i++) {
p[i] = x[i][t];
if (p[i])
t = 1;
else
t = t + 1;
}
optg = f[1][1];
delete f; delete x;
return optg;
}
int main() {
int n = 6;
int D = 2;
int optg;
int r[6][8] = { {14,12,10,8,6},{15,15,14,14,13},{17,17,16,16},{19,19,18},{21,20},{23} };
int m[6][8] = { {1,2,3,4,5},{1,2,3,4,5},{1,1,2,2,},{1,1,2},{1,1},{1} };
int u[6][8] = { {24,24,25,25,25},{20,22,24,26,28},{20,22,24,26},{20,22,24},{21,22},{21} };
bool p[6];
optg = update_dev(n, D, r, m, u, p);
printf("%d\n", optg);
for (int i = 0; i < 6; i++) {
printf("%d", p[i]);
}
return 0;
}
设备更新问题
于 2024-05-14 11:20:40 首次发布