题目描述:
给定一个数字,我们按照如下规则把它翻译为字符串:
0 翻译成 a,1 翻译成 b,……,11 翻译成 l,……,25 翻译成 z。
一个数字可能有多个翻译。
例如 12258 有 5 种不同的翻译,它们分别是 bccfi、bwfi、bczi、mcfi 和 mzi。
请编程实现一个函数用来计算一个数字有多少种不同的翻译方法。
输入格式:
一个数字字符串。
输出格式:
一个整数表示答案。
数据范围:
输入数字位数 [1,101]。
样例输入:
12258
样例输出:
5
时间限制: 1000ms
空间限制: 256MB
普普通通的dp
代码实现:
#include<bits/stdc++.h>
using namespace std;
#define LL long long
int f[201], n ,cnt;
int main() {
string s;
cin >> s;
n = s.size();
f[0] = 1;
for (int i = 1; i <= n; i ++ ) {
f[i]=f[i-1];
if ( i>1) {
int t= atoi( s.substr( i-2, 2 ).c_str() );
if (t >= 10 && t <= 25) f[i]+=f[i-2];
}
}
cout << f[n];
return 0;
}
为什么码风看着不同?因为老师写了一些代码,让我们填