您的位置:首页 > 其它

POJ 2033 Alphacode(26编码,水题)

2013-10-30 11:53 183 查看
一个将26个字母用数字编码的题,问你有多少可能性

从右往左扫描,用一个数组记录每一位有多少种可能,递推公式是

if '0'==a[i] :

a[i]=0

elseif '1'==a[i]||('2'==a[i]&&'7'>a[i-1]) :

a[i]=a[i-1]+a[i-2]

else

a[i]=a[i-1]

注意的要点就是0的情况,因为0无法单独存在,必须依赖他的左边一位数,所以0情况下的个数应该合并到左边,所以0时设0

#include <stdio.h>
int main(void)
{
char data[10000];
int temp[10000];
int i=0;
while(scanf("%s",data)&&!('0'==data[0]&&0==data[1]))
{
for(i=0;0!=data[i];++i);
temp[i]=1;
if('0'==data[i-1])
{
temp[i-1]=0;
}
else
{
temp[i-1]=1;
}
for(i-=2;i>=0;--i)
{
if('0'==data[i])
{
temp[i]=0;
}
else
{
temp[i]=temp[i+1];
if('1'==data[i]||'2'==data[i]&&'7'>data[i+1])
{
temp[i]+=temp[i+2];
}
}
}
printf("%d\n",temp[0]);
}
}


[/code]
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: