PKU-3624
代码
//0-1背包问题 如果不使用循环数组,空间越界。
#include <stdio.h>
int main()
{
int n, v, i, j;
int w[3403], p[3403];
int f[12881];
scanf("%d %d", &n, &v);
for(i = 1; i <= n; i++)
scanf("%d %d", &w[i], &p[i]);
for(i = 0; i <= v; i++)
f[i] = 0;
for(i = 1; i <= n; i++) {
for(j = v; j >= w[i]; j--) {
if(f[j - w[i]] + p[i] > f[j])
f[j] = f[j - w[i]] + p[i];
}
}
printf("%d\n",f[v]);
return 0;
}
#include <stdio.h>
int main()
{
int n, v, i, j;
int w[3403], p[3403];
int f[12881];
scanf("%d %d", &n, &v);
for(i = 1; i <= n; i++)
scanf("%d %d", &w[i], &p[i]);
for(i = 0; i <= v; i++)
f[i] = 0;
for(i = 1; i <= n; i++) {
for(j = v; j >= w[i]; j--) {
if(f[j - w[i]] + p[i] > f[j])
f[j] = f[j - w[i]] + p[i];
}
}
printf("%d\n",f[v]);
return 0;
}