NYIST 289 0-1背包问题优化

来源:互联网 发布:中石油logo相关数据 编辑:程序博客网 时间:2024/05/22 12:24


#include <stdio.h>#include <string.h>#define max(a,b) (((a)>(b))?(a):(b))int w[1001], v[1001], dp[1001];int main(){    int n, c;    while(scanf("%d %d", &n, &c) && (c+n))    {        memset(dp, 0, sizeof(dp));        for(int i=1; i<=n; i++)            scanf("%d %d", &w[i], &v[i]);        for(int i=1; i<=n; i++)        {            //for(int j=c; j>=0; j--)            for(int j=c; j>=w[i]; j--)            {                //if(j>=w[i])                    dp[j] = max(dp[j], dp[j-w[i]]+v[i]);            }        }        printf("%d\n", dp[c]);    }    return 0;}