#include<stdio.h>
void zhuanhuan(int r[],int p[] ,int c[],int n) {
int i, j;
r[0] = 0;
for (i = 1; i <= n; i++) {
int x = -1;
int t;
for (j = 1; j <=i; j++) {
if (x < p[j] + r[i-j]) {
x = p[j] + r[i-j];
t = j;
}
}
r[i] = x;
c[i] = t;
}
}
void prin(int r[],int c[], int n) {
printf("%d\n", r[n]);
while (n > 0) {
printf("%d ", c[n]);
n = n - c[n];
}
}
int main(void) {
int n;
int i, j;
int p[20] = {0};
int r[20] = { 0 };
int c[20];
scanf_s("%d", &n);
for (i = 1; i <= n; i++) {
scanf_s("%d", &p[i]);
}
zhuanhuan(r, p,c, n);
prin(r, c, n);
}
钢条切割类动态规划算法
最新推荐文章于 2021-03-03 21:08:26 发布