/*
01 背包问题实际就是将它装入一个固定的容器中,但是我们要把有限的容器中装入其价值最大的物品,
02 物品只有第一个装完,有了空间才可以装第二个,正如我们大家装入物品一样的;
03 这里是用动态规划,非用贪心算法,其实这是两个概念;
04 先看动态规划的,接下来才是用贪心算法,背包价值最大,利用空间最大,平均利用空间最大这是贪心算法的核心;
05 动态规划:p[i][j]=p[i-1][j],w[i]>c--1;p[i][j]=Max(p[i-1][j],p[i-1][j-w[i]]+v[i]);p[0][j]=p[i][0]=0;
*/
using namespace std;
const int & Max(const int &a,const int &b)
{
return a>b?a:b;
}
void packageNp(int c,int j,int v[],int w[],int **p,bool a[])
{
for(int i=0;i<=j;i++)
for(int k=0;k<=c;k++)
{
if(i==0||k==0)
{
p[i][k]=0;
}
}
for(int i=1;i<=j;i++)
for(int k=1;k<=c;k++)
{
if(w[i]>c)
{
p[i][k]=p[i-1][k];
a[i]=true;
}
else if(w[i]<=c)
{
p[i][k]=Max(p[i-1][k],p[i-1][k-w[i]]+v[i]);
a[i]=true;
}
}
}