题目描述
P2925 [USACO08DEC]Hay For Sale S
解法:0-1背包问题
这里稍微有个优化:当马车早早被装满时,就可以结束程序输出结果了
#include <bits/stdc++.h>
using namespace std;int main()
{
int c, h;cin >> c >> h;vector<int> v(h+1, 0);vector<int> dp(c+1, 0);for(int i=1;i<=h;i++) cin >> v[i];for(int i=1;i<=h;i++){
for(int j=c;j>=v[i];j--){
dp[j] = max(dp[j], dp[j-v[i]]+v[i]);if(dp[c]==c) break;}}cout << dp[c];return 0;
}