Sicily1001 Alphacode
来源:互联网 发布:众筹平台数据统计 编辑:程序博客网 时间:2024/05/29 02:13
题目地址:http://soj.me/1001
思路解析:是动态规划的一个很好的练手练习题。主要思路就是考虑前i个字符串和前i-1个字符串的解码数量之间的关系。
1、如果Si-1Si在[1, 26]之间,则dpArr[i] = dpArr[i-1] + dpArr[i],其中dp[i]代表前i个字符组成数字的最大解码数量。
2、否则,dpArr[i] = dpArr[i-1];
3、最麻烦的是考虑0的情况!为此我付出n多次的WA。。。
分享几个测试用例,奇数行为输入,偶数行为输出:
102031011020111
代码如下所示
#include <iostream>#include <string>#include <cstring>using namespace std;int dpArr[10000];int main(void){string str;while(cin >> str && str[0] != '0'){memset(dpArr, 0, sizeof(dpArr));dpArr[0] = 1;dpArr[1] = 1;for(int i=2; i <= str.length(); i++){if((str[i-1-1] - '0') * 10 + str[i-1] - '0' <= 26){if(str[i-1] == '0'){dpArr[i] = dpArr[i-2]; }else{if(str[i-1-1] == '0'){dpArr[i] = dpArr[i-1];}else{dpArr[i] = dpArr[i-1] + dpArr[i-2];}}}else{if(str[i-1] == '0'){dpArr[str.length()] = 0;break;}else{dpArr[i] = dpArr[i-1];}}}cout << dpArr[str.length()] << endl;}return 0;}
- Sicily1001 Alphacode
- Alphacode
- Alphacode
- Sicily1001, 1306, 1438
- 1001: Alphacode
- 1001. Alphacode
- poj2033------Alphacode
- C++ Alphacode
- SPOJ Alphacode
- 1001.Alphacode
- 1001. Alphacode
- 1002.Alphacode
- 1001. Alphacode
- sicily1001 全排列(升序)
- Sicily1001. 自上而下语法分析(二)
- sicily1001. 输入输出LL(1)语法分析程序 **
- zoj 2202 ALPHACODE
- pku2033 Alphacode (动态规划)
- linux内核定时器
- 4.1 iOS开发视频教程—NSNumber数字的使用
- python 多进程使用的一个假象
- 从事前端开发必须要了解的CSS原理
- 单链表的基本操作
- Sicily1001 Alphacode
- 微软面试题:求整数随机数构成的数组中找到长度大于=3的最长的等差数列
- LINUX c++线程池框架
- 别的电脑上的ISE工程放到本电脑上后使用ModelSim仿真时出错的解决办法
- 使用boolalpha操作子
- verilog系统任务对文件的读写操作
- 统计文章的单词各数
- netstat参数
- 中华英才网简历筛选标准