hdu 1508 Alphacode(记忆化搜索)

来源:互联网 发布:淘宝上买的弹弓枪拒收 编辑:程序博客网 时间:2024/05/18 00:22

题目中字符串的长度没有说清楚(也可能是我没看到),提交一直返回wa,改了好久。。。

简单的记忆化搜索。需要注意对于0的情况要特别处理。为了方便处理,我的字符串是从1输入的,在字符串的最后我又添加了一个1.

#include<stdio.h>#include<string.h>#define N 1000005typedef long long LL;char s[N];int a[N],ln;LL dp[N];LL dfs(int x){    if(x>=ln) return 1;    if(dp[x]>0) return dp[x];    if(a[x+1]!=0) dp[x]+=dfs(x+1);if(a[x]*10+a[x+1]<=26&&a[x+2]!=0) dp[x]+=dfs(x+2);    return dp[x];}int main(){    while(gets(s+1))    {        if(s[1]=='0') break;        ln=strlen(s+1);int i;        for(i=1; i<=ln; i++) a[i]=s[i]-'0';a[i]=1;        memset(dp,0,sizeof(dp));        dp[1]=dfs(1);        printf("%I64d\n",dp[1]);    }    return 0;}

原创粉丝点击