编辑代码

#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);
		
}