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
[/code]
从右往左扫描,用一个数组记录每一位有多少种可能,递推公式是
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]
相关文章推荐
- python模块学习---glob 文件路径查找
- Windows平台下libevent库的使用
- XAMPP Apach无法启动
- 修改apache上传文件大小限制
- windows下安装和使用geany
- 比古数据采集器 - 关于数据采集软件的一点思路 .
- u-boot的环境变量详解
- HOOK技术
- jsp指令 详解
- JSP脚本和指令的使用
- java 中的 加密
- java 中 路径的获取 (转)
- IO 总结 (转)
- mysql 模糊查询
- html 特殊字符(转)
- HTML 标签大全(转)
- js中,参数的配置
- js删除前 让用户确定
- 随感
- js 转换文本框的值(转)