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