数的计算

我们要求找出具有下列性质数的个数(包含输入的自然数n):
先输入一个自然数n(n<=1000),然后对此自然数按照如下方法进行处理:

  1.      不作任何处理;
    
  2.      在它的左边加上一个自然数,但该自然数不能超过原数的一半;
    
  3.      加上数后,继续按此规则进行处理,直到不能再加自然数为止.
    

很快的得到递推关系:

\[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];
}
posted @ 2017-05-03 13:30  rsqppp  阅读(154)  评论(0)    收藏  举报