题目大意是:字母A~Z,分别用1~26来表示。现在给你一字符串,比如25114,它可以被翻译为不同的字符串。问题就是求可以被分几种情况。相当于排列组合。
#include<iostream>
char str[5000];
int main(){
int i;
int pre,cur,t;
while(scanf("%s",str)&&str[0]!='0'){
pre=0;cur=1;
for(i=strlen(str)-1;i>=0;i--){
if(str[i]>'2'||str[i]=='2'&&str[i+1]>'6'){
pre=cur;
}
else if(str[i]=='0'){
pre=0;
i--;
}
else{
t=pre+cur;
pre=cur;
cur=t;
}
}
printf("%d"n",cur);
}
}
代码很简单,但不是很理解,尤其是对于160这样的数据,应该输出什么呢,匪夷所思,有谁清楚的话可以直接留言.
转载于:https://www.cnblogs.com/saintqdd/archive/2007/08/29/875064.html