最最最基本的動態規劃題,最近室友問的挺多就寫一下
例:
有n個重量和價值分別為 wi 和 vi 的物品,從這些物品中挑選出重量不超過w的物品,求所有挑選方案中價值總和的最大值
樣例輸入
n=4;
(w,v)=
w=5;
輸出
7(選第0,1,3號物品)
記憶化搜尋
#include#include#include#include#includeusing namespace std;
typedef long long ll;
#define maxn 1000888
#define inf 1000000007
int dp[100][100];//定義dp陣列
int m,n,i,t,j,k,w;
int w[100],v[100];
int rec(int i,int j) //定義搜尋用的回溯函式
int num;
if(i==n)//i從0開始,取n而不是n-1
else if(jelse
return dp[i][j]=num;
} int main()
scanf("%d",&w);
printf("%d",rec(0,w));
}
基本動態規劃題學習筆記與解析 8(劃分數問題)
這裡我們仍然用dp來求解 例 有n個無區別的物品,將其劃分成不超過m組,求出劃分方法數取模m的餘數 樣例輸入 n 4m 3 m 10000 輸出 4 1 1 2 1 3 2 2 4 這樣的劃分被稱作n的m劃分數。dp問題對於計算各種排列組合個數,概率或者期望之類的計算都非常有用,在此,我們定義如下陣...
動態規劃學習筆記(1)
記錄一下慕課學習的筆記,以及例題 遞迴函式有n個引數就定義乙個n維的陣列,陣列的下標是遞迴函式引數的取值範圍。這樣就可以從邊界值開始逐步填充陣列,相當於計算遞迴函式值的逆過程。eg 例題1數字三角形 1.將原問題分解為子問題 將原問題分解為若干個子問題,與原問題的形式相同或類似,只不過規模小了。子問...
動態規劃學習與例項 1
分解最優子結構 找出各級最優子結構間遞推關係 自底向上求解最優子結構表 追溯到最優解 problem1.給定乙個數字序列,找出其中最長子序列,子串行滿足順序遞增。求解最長子序列的長度和對應的子串行。problem2.給定乙個數字序列,找出其中和最大的子串行,並求解子串行的長度和對應的子串行。prob...