您的位置:首页 > 其它

01背包问题

2017-04-15 18:11 281 查看
现有物品,它们的重量分别为2 2 6 5 4,它们的价值分别是6 3 5 4 6,现在给你个承重为10的背包,判断最大可以放多少价值的物品

看懂输出的那个表格就行了

#include <iostream>

#include <stdio.h>

#include <string.h>

#include <math.h>

using namespace std;

int wi[6]={2,2,6,5,4};

int va[6]={6,3,5,4,6};

int dp[10][10];

int main()

{

    int m=10;

    memset(dp,0,sizeof(dp));

    for(int i=4;i>=0;i--)

    {

        for(int j=1;j<=m;j++)

        {

            if(j<wi[i])

                dp[i][j]=dp[i+1][j];

            else

                dp[i][j]=max(dp[i+1][j],dp[i+1][j-wi[i]]+va[i]);

        }

    }

    for(int i=0;i<=4;i++)

    {

        for(int j=1;j<=10;j++)

            printf("%d ",dp[i][j]);

        printf("\n");

    }

    return 0;

}

/*

现有物品,它们的重量分别为2 2 6 5 4,它们的价值分别是6 3 5 4 6

,现在给你个承重为10的背包,判断最大可以放多少价值的物品

*/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: