#include<iostream>
#include<cstring>
#include<fstream>
using namespace std;
static int f[10001];
static char a[10002];
int main()
{
while (cin >> (a + 1))
{
if (a[1] == '0')
break;
int n = strlen(a + 1);
int i;
f[0] = 1; f[1] = 1;
for (i = 2; i <= n; i++)
{
f[i] = 0;
if (a[i] != '0')
f[i] = f[i - 1];
if (a[i - 1] == '1' || (a[i -1] == '2' && a[i] <= '6'))
{ f[i] += f[i - 2]; }
}
cout << f[n] << "\n";
}
return 0;
}
[a, z]===>[1, 26]
典型的动态规划,递推关系比较容易找寻。
f[i] [1, i] 段的数目。
另外就是 ‘0’ 和 0 程序书写时易出错。