算法导论三剑客之 动态规划 01背包问题

 1 #include "iostream"
 2 using namespace std;
 3 
 4 float MAX(float m1,float m2){
 5     if(m1>=m2)
 6         return m1;
 7     else
 8         return m2;
 9 }
10 
11 float bag_Zero_One(int n,float v,float p[],float w[]){
12     if(n==0||v==0)
13         return 0;
14     else{
15         float m2;
16 
17         m2=bag_Zero_One(n-1,v,p,w);
18         if(v>=w[n]){
19             float m1;
20             m1=bag_Zero_One(n-1,v-w[n],p,w)+p[n];
21             m2=MAX(m1,m2);
22         }
23         return m2;
24     }
25 }
26 
27 void main(){
28     float p[]={0,10,3,2};
29     float w[]={0,5,6,7};
30     float v=12;
31     cout<<"Result:"<<bag_Zero_One(3,v,p,w)<<endl;
32     getchar();
33 }
原文地址:https://www.cnblogs.com/593213556wuyubao/p/3800522.html