标签:dp
题目连接:点击打开链接
解题思路:
典型的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; } }
标签:dp
原文地址:http://blog.csdn.net/u013447865/article/details/44837647