01背包二维数组

假设一个小偷偷珠宝店,拿了一个承重20的背包,求能偷得最大价值
重 价
2 3
3 4
4 5
5 8
9 1

最大价值 23
https://www.bilibili.com/video/av36136952?from=search&seid=11644509251735546077
是这个视频里面人讲的例题,挺好理解的,可以去看看。

#include<stdio.h>
#define N 5
#define M 7
int B[N][M]={0};
int w[5]={0,1,2,3,2};
int v[5]={0,4,6,12,7};
void aaa()
{
    int i,j;
    for(i=1;i<=N;i++)
        for(j=1;j<=M;j++)
        if(w[i]>j)
    {
        B[i][j]=B[i-1][j];//表示物体太重放不进背包
    }
    else
    {
        int v1=B[i-1][j-w[i]]+v[i];//放进去的情况下,
        						//减去物体的重量,加上物体的价值
        int v2=B[i-1][j];//不放进去的情况
        if(v1>v2)
            B[i][j]=v1;
        else
            B[i][j]=v2;//选择价值大的
    }

}
int main()
{
    aaa();
    printf("%d\n",B[4][6]);
    return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值