编辑代码


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

————————————————
版权声明:本文为CSDN博主「千篇不一律」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_41063141/article/details/90181994