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;
}

posted on 2009-11-28 19:34  我是一只螃蟹  阅读(211)  评论(0编辑  收藏  举报

导航