NOJ 1010 记忆化搜索

来源:互联网 发布:q宠大乐斗辅助软件下载 编辑:程序博客网 时间:2024/05/04 21:04

数的计算
时间限制(普通/Java) : 1000 MS/ 3000 MS 运行内存限制 : 65536 KByte
总提交 : 1820 测试通过 : 565
比赛描述
要求找出具有下列性质数的个数(包含输入的自然数n):
先输入一个自然数n(n<=1000),然后对此自然数按照如下方法进行处理:
1. 不作任何处理;
2. 在它的左边加上一个自然数,但该自然数不能超过原数的一半;
3. 加上数后,继续按此规则进行处理,直到不能再加自然数为止.

输入
一个自然数n

输出
一个数,表示满足条件的数的个数

样例输入
6

样例输出
6

提示
样例说明:满足条件的数是6,16,26,126,36,136

题目来源
NOIP2001 普及组

#include <iostream>#include <cstdio>#include <cstring>using namespace std;int dp[1005];int dfs(int cur){    if(dp[cur]>=0) return dp[cur];    int res=0;    for(int i=0;2*i<=cur;i++)    {        res+=dfs(i);    }    return dp[cur]=res;}int main(){    int n;    int ans;    memset(dp,-1,sizeof(dp));    dp[0]=1;    scanf("%d",&n);    ans=dfs(n);    printf("%d\n",ans);    return 0;}
1 0
原创粉丝点击