01背包问题

来源:互联网 发布:淘宝电脑版登录链接 编辑:程序博客网 时间:2024/05/11 23:08

01背包问题,并打印出路径


#include<iostream>#include<stdlib.h>using namespace std;#define MAX 100int f[MAX][MAX];int Path[MAX][MAX];int main(){int Weight[] = {0,2,3,1,4,6,5};  int Value[] =  {0,5,6,5,1,19,7};int nCapacity = 10;//memset(f[0],-1,sizeof(f[0]));for(int i = 1;i<=6;i++){for(int j=1;j<=nCapacity;j++){if(j >= Weight[i] && f[i-1][j-Weight[i]]+Value[i] > f[i-1][j]){f[i][j] = f[i-1][j-Weight[i]]+Value[i];Path[i][j] = 1;}elsef[i][j] = f[i-1][j];cout<<f[i][j]<<" ";}cout<<endl;}int i=6,j=nCapacity;while(i>0 && j>0){if(Path[i][j]==1){cout<<Value[i]<<" ";j -= Weight[i];}i--;}return 0;}


0 0