【SPOJ-ACODE】Alphacode【计数DP】

来源:互联网 发布:win7公用网络无法修改 编辑:程序博客网 时间:2024/06/05 22:30

题意:

一些没有空格间隔的数,若1对应A,2对应B,...,26对应Z,问有多少种对应的字符串。


很简单的DP。


注意0的处理。


</pre><pre name="code" class="cpp">#include <cstdio>#include <cstring>#include <algorithm>using namespace std;typedef unsigned long long ULL;const int maxn = 5005;int n;ULL dp[maxn];char s[maxn];int main() {while(1) {scanf("%s", s + 1); n = strlen(s + 1);if(n == 1 && s[1] == '0') break;dp[0] = 1;for(int i = 1; i <= n; i++) {dp[i] = 0;if(s[i] != '0') dp[i] += dp[i - 1];if(i > 1 && s[i - 1] == '1') dp[i] += dp[i - 2];if(i > 1 && s[i - 1] == '2' && s[i] >= '0' && s[i] <= '6') dp[i] += dp[i - 2];}printf("%llu\n", dp[n]);}return 0;}


0 0
原创粉丝点击