有n個揹包和價值分為wi
,vi 的物品。從這些物品中挑選出總重量不超過w的物品,求所有挑選方案中價值總和的最大值。
第一行輸入n
接下來n行的物品(w,v)
最後輸入一行w
輸出一行價值總和的最大值
4
2 31 2
3 42 2
5
7
利用函式引數一定,返回值一定,剪枝掉重複運算的部分。
#include
#include
#include
using
namespace
std;
int dp[1001][1001];
int n;
int w;
pair bag[1001];
int rec(int i, int j)
if (i == n) else
if (j < bag[i].first) else
dp[i][j] = r;
return r;
} int main()
cin >> w;
memset(dp, -1, sizeof(dp));
cout
<< rec(0, w);
return
0;}
動態規劃練習題 6(登山)
隊員們發現山上乙個有n個景點,並且決定按照順序來瀏覽這些景點,即每次所瀏覽景點的編號都要大於前乙個瀏覽景點的編號。同時隊員們還有另乙個登山習慣,就是不連續瀏覽海拔相同的兩個景點,並且一旦開始下山,就不再向上走了。隊員們希望在滿足上面條件的同時,盡可能多的瀏覽景點,你能幫他們找出最多可能瀏覽的景點數麼...
關於動態規劃的練習題
1.給出不同面額的硬幣以及乙個總金額.寫乙個方法來計算給出的總金額可以換取的最少的硬幣數量.如果已有硬幣的任意組合均無法與總金額面額相等,那麼返回 1。public static intdp int arr,int count 如果不能湊成額度,則返回 1 if cost count integer...
動態規劃 揹包問題
給定n個物品,重量是,價值是,包的容量 承重 是w 問,放入哪些物品能使得包內價值最大 1 需要將問題轉化為子問題,通過遞迴實現,且子問題必然與父問題存在關聯 2 定義v i,j 表示為,當item取自前i個items且揹包capacity j 時,揹包問題的最優解,也即最高的價值。3 從前i個it...