#include <iostream>
#include <iomanip>
using namespace std;
int main()
{
//定义物品的重量
int weight[]={4,5,6,2,2};
//定义物品的价值
int value[]={6,4,5,3,6};
//物品的个数
const int goodSize=5;
//背包的总大小
const int bagSize=10;
//方便理解定义了二维的dp矩阵
int dp[goodSize+1][bagSize+1];
//初始化dp矩阵
for(int i=0; i<=goodSize; i++)
{
for(int j=0; j<=bagSize; j++)
{
dp[i][j]=0;
}
}
for(int i=1; i<=goodSize; i++)
{
for(int j=0; j<=bagSize; j++)
{
//若加入这个物品能增加这个背包的总总量,就加进去
if(j-weight[i-1]>0 && (dp[i-1][j-weight[i-1]]+value[i-1]>dp[i-1][j]))
{
dp[i][j]=dp[i-1][j-weight[i-1]]+value[i-1];
}
else
{
dp[i][j]=dp[i-1][j];
}
}
}
//打印dp矩阵
for(int i=0; i<goodSize+1; i++)
{
for(int j=0; j<bagSize+1; j++)
{
cout<<setw(2)<<dp[i][j]<<" ";
}
cout<<endl;
}
cout<<endl;
return 0;
}
【day-3】01背包
最新推荐文章于 2020-12-01 22:02:50 发布