首页 > 其他 > 详细

动态规划之背包问题记录

时间:2019-09-26 18:21:16      阅读:99      评论:0      收藏:0      [点我收藏+]

0-1背包问题,调试通过,切记一维滚动数组的输出为b[j+1]

#include<stdio.h>
#include<string.h>
int max(int a, int b)
{
    if(a>b) return a;
    else return b;
}
int main()
{
    int b[1200];
    int n, x, pi[1200], mi[1200], i, j;
    while(~scanf("%d%d", &n, &x))
    //scanf("%d%d", &n, &x);
    {
        memset(b, 0, sizeof(b));
        for(i = 0;i<n;i++)
        {
            scanf("%d%d", &pi[i], &mi[i]);
        }
        for(i = 0;i<n;i++)
        {
            for(j = x;j>=pi[i];j--)
            {
                b[j] = max(b[j], b[j-pi[i]]+mi[i]);
            }
        }
        printf("%d\n",b[j+1]);
    }
    return 0;
}

 

动态规划之背包问题记录

原文:https://www.cnblogs.com/lison-record/p/11593190.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!