编辑代码

#include<stdio.h>
#include<iostream>
#define n 5
      int w[n] = {6,5,4,2,1};
        int v[n] = {5,3,5,3,2};
           int c = 10;
      int flag[n],best[n];
   int temp;
     int max;
     int maxvalue;
      int rest;
   void nfs(int m)
{
    f(m == n){
       if(temp > max){
    max = temp;
    for(i = 0;i < n;i ++){
   best[i] = flag[i];
}
}
return 0;
}
   if(temp + rest > max){
   if(temp + w[m] <= c){
   temp += w[m];
flag[m] = 1;

nfs(m + 1);
flag[m] = 0;
}
}
int main()
{
int i;
temp = 0;
rest = 0;
for(i = 0;i < n;i ++)
rest += w[i];
nfs(0);
for(i = 0;i < n;i ++){
if(best[i] == 1){
std::cout<<"选择物品第"<< i+1 <<"个 重量为"<<w[i]<<" ";
maxvalue += v[i];
}
}
std::cout<<"最大价值为:"<<max<<std::endl;
std::cout<<std::endl;
return 0;
}