水牛♂ToTo

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: :: :: 管理 ::
题目大意是:字母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这样的数据,应该输出什么呢,匪夷所思,有谁清楚的话可以直接留言.
posted on 2007-08-29 20:28  saintqdd  阅读(692)  评论(1编辑  收藏  举报