
分析: 动态转移方程dp[i] = max{dp[i], dp[i-w[i]] - v[i]}
/**
* 题目: 洛谷OJ P1048 采药
* 题型: 01背包
**/
#include <cstdio>
#include <iostream>
using namespace std;
const int maxn = 1000+10;
int N, W, dp[maxn], t1, t2;
int main() {
cin >> W >> N;
for(int i = 1; i <= N; i++) {
cin >> t1 >> t2;
for(int j = W; j >= t1; j--) {
dp[j] = max(dp[j], dp[j-t1]+t2);
}
}
cout << dp[W];
return 0;
}
本文通过洛谷OJP1048采药问题详细解析了01背包问题的解决思路及实现过程,采用C++语言实现动态规划算法,通过动态转移方程dp[i]=max{dp[i],dp[i-w[i]]+v[i]}
897

被折叠的 条评论
为什么被折叠?



