完全背包

#include<stdio.h>
#include<string.h>
int max(int a, int b)
{
    return (a > b ? a : b);
}
int main()
{
    int m;
    scanf("%d",&m);
    while(m--)
    {
        int n, w;
        scanf("%d%d",&n,&w);
        int weight[10000] = {0}, value[10000] = {0}, dp[200000], i, j;
        memset(dp,-0x3f,sizeof(dp));         //初始化为负数,结束时看是否大于0判断是否装满
        dp[0] = 0;
        for (i = 1; i <= n; i++)
            scanf("%d%d",&weight[i], &value[i]);
        for (i = 1; i <= n; i++)
        {
            for (j = weight[i]; j <= w; j++)
            {
                dp[j] = max(dp[j], dp[j-weight[i]] + value[i]);
            }
        }
        if(dp[w] >= 0)
            printf("%d\n",dp[w]);
        else
            printf("NO\n");
    }
    return 0;
}
全部评论

相关推荐

03-19 09:58
河海大学 Java
最喜欢春天的奇亚籽很...:同学,是小红书不是小哄书,一眼就能看到的错误
投了多少份简历才上岸
点赞 评论 收藏
分享
03-23 23:00
黄淮学院 Java
才浅Caiq:老家县城送外卖也5000,要求别这么低
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务