数的计算
我们要求找出具有下列性质数的个数(包含输入的自然数n):
先输入一个自然数n(n<=1000),然后对此自然数按照如下方法进行处理:
-
不作任何处理; -
在它的左边加上一个自然数,但该自然数不能超过原数的一半; -
加上数后,继续按此规则进行处理,直到不能再加自然数为止.
很快的得到递推关系:
\[f(n) = \sum_{i = 1}^{n/2}f(i)
\]
\[n = 1 时 f(n) = 1
\]
数据小,我直接记忆化搜索了
int search(int n)
{
if(n == 1) return f[1] = 1;
if(f[n] > 1) return f[n];
f[n] = 1;
for(int i = 1;i <= n/2;i++){
f[n] += search(i);
}
return f[n];
}

浙公网安备 33010602011771号