hihocoder1038(01背包)

来源:互联网 发布:超图软件(300036)股吧 编辑:程序博客网 时间:2024/06/05 03:05

题目连接:点击打开链接


解题思路:

典型的01背包,非常省空间的一种写法。


完整代码:

#include <iostream>#include <cstdio>#include <cstring>#include <climits>using namespace std;const int maxn = 111001;int n , m;int need[maxn] , val[maxn] , dp[maxn];int main(){    #ifdef DoubleQ    freopen("in.txt" , "r" , stdin);    #endif    while(cin >> n >> m)    {        memset(dp , 0 , sizeof(dp));        for(int i = 1 ; i <= n ; i ++)            cin >> need[i] >> val[i];        for(int i = 1 ; i <= n ; i ++)        {            for(int j = m ; j >= need[i] ; j --)            {                dp[j] = max(dp[j] , dp[j-need[i]] + val[i]);            }        }        cout << dp[m] << endl;    }}


0 0
原创粉丝点击