打赏

01背包

关于动态规划,其核心就是dp的操作

 

 1 #include<iostream>
 2 #include<algorithm>
 3 #include<cstdio>
 4 using namespace std;
 5 int dp[120];
 6 int weight[1100];
 7 int value[1100];
 8 int main()
 9 {
10     int n,m;
11     cin>>m>>n;  //n为件数,m为最大容量
12     for(int i=1;i<=n;i++)
13     {
14         cin>>weight[i]>>value[i];
15     }
16     for(int i=1;i<=n;i++)            //通过n次遍历来更新dp
17         for(int j=m;j>=weight[i];j--)
18             dp[j]=max(dp[j],dp[j-weight[i]]+value[i]);  //每一次取当前能装的最大价值
19     cout<<dp[m]<<endl;
20     return 0;
21 }

 

posted @ 2019-04-09 22:48  Onebelieve  阅读(100)  评论(0编辑  收藏  举报