動態規劃入門 FOJ1320 Ones

2021-09-17 08:45:09 字數 668 閱讀 8330

此題為動態規劃入門級演算法題,題目**計科老班

給乙個整數n,要你找乙個值為n的表示式,這個表示式只有1 + * ( ) 夠成。並且1不能連續,比如11+1就不合法。

n,(1<=n<=10000)

輸出最少需要多少個1才能構成表示式。

2

10

2

7

此題資料龐大,應該採用動態規劃,將原問題分解為若干個子問題,先求解子問題,然後從這些子問題得解得到原問題的解。

樣例:n=2=1+1 ans=2

n=10=(1+1)(1+1+1+1+1) ans=7

此題需要,讓f[i]表示最少數量的1能夠表示i。無非兩種情況,加法組成或者乘法組成。

add: f[i]=f[j]+f[i-j] 0(1+1)…6則為6=(1+1)(1+1+1),即2和3的最優解得到…10則為10=(1+1)*(1+1+1+1+1),即2和5最優解得到,因此,最終總問題分解為多個子問題解決,使用動態規劃。

#include

using namespace std;

int a

[10001];

int main()

} cout<<

a[n]

;}

動態規劃入門

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

動態規劃入門

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

動態規劃入門

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