0-1背包
1 #include<iostream> 2 #include<algorithm> 3 using namespace std; 4 5 int select(int values[],int n,int weights[],int capacity) 6 { 7 int dp[n+1][capacity+1]={}; 8 for(int i=1;i<=n;++i) 9 { 10 for(int j=1;j<=capacity;++j) 11 { 12 if(j<weights[i-1]) 13 { 14 dp[i][j]=dp[i-1][j]; 15 } 16 else 17 { 18 dp[i][j]=max(dp[i-1][j],values[i-1]+dp[i-1][j-weights[i-1]]); 19 } 20 } 21 } 22 return dp[n][capacity]; 23 } 24 25 int main() 26 { 27 int values[]={6,3,5,4,6}; 28 int weights[]={2,2,6,5,4}; 29 int capacity=10; 30 cout<<select(values,5,weights,capacity); 31 }
道阻且长,行则将至