首页 > 其他 > 详细

最简单的背包问题

时间:2020-12-15 15:14:29      阅读:24      评论:0      收藏:0      [点我收藏+]

技术分享图片

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int max(int a,int b)
{
    if(a>b)
        return a;
    else
        return b;
}

int main(void)
{
    int n,c,i,j;
    scanf("%d %d",&n,&c);
    int rl[n+1][c+1];
    int w[n+1],v[n+1];
    memset(rl,0,sizeof(rl));
    memset(w,0,sizeof(w));
    memset(v,0,sizeof(v));
    for(i = 1;i<=n;i++)
    {
        scanf("%d",&w[i]);
        scanf("%d",&v[i]);
    }
    for(i = 1;i <= n;i++)
    {
        for(j = 1;j<=c;j++)
        {
            if(j<w[i])
                rl[i][j] = rl[i-1][j];
            else
                rl[i][j] = max(rl[i-1][j],rl[i-1][j-w[i]]+v[i]);
        }
    }
    printf("%d",rl[n][c]); 
    return 0;
}

技术分享图片

最简单的背包问题

原文:https://www.cnblogs.com/loliconsk/p/14137982.html

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