01背包
#include<iostream>
#include<algorithm>
#include<cstdio>
#include<cstdlib>
#include<stack>
using namespace std;
struct bag
{
int v;//体积
int value;//价值
//
};
bag bb[10010];
int dp[10010];
int main()
{
/*
有N件物品和一个容量为V的背包。
第i件物品的费用是c,价值是w。
求解将哪些物品装入背包可使这些物品的费用总和不超过背包容量,
且价值总和最大。
*/
int i,j,k;
int n;
int N,V;
//
cout<<"请输物品数量 背包容量"<<endl;
cin>>n>>V;//物品数量 背包容量
cout<<"请输入 空间和 价值"<<endl;
for(i=1;i<=n;i++)
{
cin>>bb[i].v>>bb[i].value;
}
cout<<"开始运算"<<endl ;
for(i=1;i<=n;i++)
{
for(j=V;j>=bb[i].v;j--)
{
dp[j]=max(dp[j],dp[j-bb[i].v]+bb[i].value);
}
}
int maxn;
cout<<"开始检索"<<endl;
for(i=1;i<=V;i++)
{
if(i==1)
{
maxn=dp[i];
}
else
{
if(dp[i]>maxn)
{
maxn=dp[i];
}
}
}
cout<<"最大值"<<maxn<<endl;
//cout<<dp[V]<<endl;
return 0;
}