天天看點

【C++周報】第二期 2021-8-19

這次我們照樣看一道題。個人認為比上一次的簡單。

https://vijos.org/p/1130

先說方法,動态規劃,你能想到什麼?

“在它的左邊加上一個自然數,但該自然數不能超過原數的一半”

是以,如果一個數i左邊可以加上的數記作dp[i],那麼,左邊可以加上的數一共是從1到i/2的情況,也就是dp[1]+...+dp[i/2]。

再算上“什麼也不加”的情況,我們很容易得出:

dp[i]=1+dp[1]+dp[2]+...+dp[i/2]

同時,dp[1]=1,那麼我們可以寫程式了:

【C++周報】第二期 2021-8-19