#include<iostream>
#include<stdio.h>
using namespace std;
void Knapsack(int n,int c,int *w,int *p){
int f[100][100];
int i=0,j=0;
for(i=1;i<=n;i++){
for(j=1;j<=c;j++){
f[i][j]=f[i-1][j];
if(j>=w[i]){
f[i][j]=max(f[i-1][j],f[i-1][j-w[i]]+p[i]);
}
}
}
//因为我是i++和j++,循环结束,多加了一次i和j,所以最后要减回来
cout<<"背包能装的最大价值是:" << f[i-1][j-1] <<endl;
}
int main(){
int n;
int c;
/*
int w[100];
int p[100];
cout << "请输入背包容量c:"<< endl;
cin >>c;
cout <<"请输入物体个数n:"<<endl;
cin >>n;
for(int i=1;i<=n;i++)
{
cout<<"请输入物重w["<<i<<"]:"<<endl;
cin >> w[i];
}
for(int i=1;i<=n;i++)
{
cout<<"请输入物价p["<<i<<"]:"<<endl;
cin >> p[i];
}
*/
c=10; //背包容量c
n=5; //物体个数n
int w[6]={0,2,2,6,5,4}; //物重w
int p[6]={0,6,3,5,4,6}; //物价p
Knapsack(n,c,w,p);
}