(算法设计技巧与分析)Knapsack

来源:互联网 发布:交朋友的软件 编辑:程序博客网 时间:2024/06/02 00:57

#include<iostream>using namespace std;struct goods{int weight;int value;};int knapsack(int **,int row,int list,goods[],int number);int main(){int maxsize=22;goods g[5];g[0].weight=3;g[0].value=4;g[1].weight=5;g[1].value=6;g[2].weight=7;g[2].value=7;g[3].weight=8;g[3].value=9;g[4].weight=9;g[4].value=10;int **p;p=new int *[6];for(int i=0;i<6;i++)p[i]=new int [maxsize+1];cout<<knapsack(p,6,maxsize+1,g,6)<<endl;for(int i=0;i<6;i++){for(int j=0;j<23;j++)cout<<p[i][j]<<" ";cout<<endl;}return 0;}int knapsack(int **p,int row,int list,goods g[],int number){int i,j;int temp;for(i=0;i<row;i++)//初始化p[i][0]=0;for(i=1;i<list;i++)p[0][i]=0;for(i=1;i<row;i++)for(j=1;j<list;j++){p[i][j]=p[i-1][j];if(g[i-1].weight<=j)//比较当前物品的体积与背包容量体积{temp=p[i-1][j-g[i-1].weight]+g[i-1].value;//找出空出i物品体积后的价值与i物品的价值相加if(p[i][j]<temp)//比较temp与不加i物品的价值哪个大p[i][j]=temp;}}return p[row-1][list-1];}


0 0
原创粉丝点击