http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=1202
我采用的是动态规划方法,提交后就wa,郁闷,求高手
#include<stdio.h>
#include<string.h>
#include<memory.h>
char ch[502];
int dp[502];//dp[i]表示ch[0]到ch[i]有多少种不同编码方式
int main()
{
int i=0,len;
//freopen("in.txt","r",stdin);
while(scanf("%s",ch)!=EOF)
{
if(ch[0]=='0')
break;
memset(dp,0,sizeof(dp));
dp[0]=1;
len=strlen(ch);
if(ch[0]=='1' && ch[1]>'0')
dp[1]=2;
else if(ch[0]=='2' && ch[1]>'0' && ch[1]<='6')
dp[1]=2;
else
dp[1]=1;
for(i=2;i<len;i++)
{
if(ch[i]=='0' && ch[i-1]=='1')
dp[i]=dp[i-2];
else if(ch[i]=='0' && ch[i-1]=='2')
dp[i]=dp[i-2];
else if(ch[i-1]=='1')
dp[i]=dp[i-1]+dp[i-2];
else if(ch[i-1]=='2' && ch[i]>'0' && ch[i]<='6')
dp[i]=dp[i-1]+dp[i-2];
else
dp[i]=dp[i-1];
}
printf("%d\n",dp[len-1]);
}
//fclose(stdin);
return 0;
}