【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,那么我们可以写程序了:

 

posted @ 2021-08-19 09:36  计算机知识杂谈  阅读(73)  评论(0编辑  收藏  举报