動態規劃入門

2021-08-19 16:58:27 字數 697 閱讀 4677

input

單組樣例

乙個整數n,代表有n格(1<=n<=20)

乙個整數m,代表有m個陷阱(1<=m<=n)

乙個整數k,代表有k點血(1<=k<=m+1)

接下來有m個互不相同的整數,代表這些格仔有乙個陷阱。(1<=ai<=n)

output

跳到終點有幾種跳法

sample input

3 0 1

3 3 1

1 2 3

sample output4

0解題思路:

設dp[i][j]代表走到第i個位置還剩j滴血,如果當前格為陷阱,dp[i][j]=dp[i-1][j+1]+dp[i-2][j+1]+dp[i-3][j+1],

如果當前格不為陷阱,dp[i][j]=

dp[i-1][j];+

dp[i-2][j]+dp[i-3][j];

最後統計dp[n][1]--dp[n][k]的和即可

ac**:

#include

using namespace std;

int main()

for(i=1;i<=n;i++)

else}}

for(i=1;i<=k;i++)

sum+=dp[n][i];

printf("%d",sum);

return 0;

}

動態規劃入門

1 用 dp 做的題大多數返回值是int boolean,求max min,不能打亂原來輸入順序。2 動態規劃有兩個重要定義,乙個叫 optimal substructure 另乙個叫 overlap subproblem 各種排序 tree 類問題中,都會用到 divide conquer 的思想...

動態規劃入門

大家可以看看這篇文章dp,哪個更容易理解就看哪個!一 動態規劃的定義 動態規劃程式設計是一種針對於解決最優化問題的一種途徑 一種方法,而不是一種特殊演算法,也就是說它沒有固定的模板。在動態規劃中,每走一步都要看看能不能最優,而且動態規劃最擅長的就是多階段問題!二 動態規劃的基本概和基本模型構成 1....

動態規劃入門

學動態規劃自然要從數字三角形開始起步,那麼我們就先從數字三角形開始。數字三角形題目 有乙個由非負整數組成的三角形,第一行只有乙個數,除了最下行之外的每個數的左下方和右下方各有乙個數,如下圖所示 3 24 10 1 4 3 2 20 從第一行的數開始,每次可以往下或往右下走一格,直到走到最下行,把沿途...