水牛♂ToTo

  博客园 :: 首页 :: 新随笔 ::  ::  :: 管理 ::
  34 随笔 :: 0 文章 :: 15 评论 :: 0 引用
题目大意是:字母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 阅读(263) 评论(1)  编辑 收藏 网摘 所属分类: ACM题解

评论

#1楼  2008-09-26 23:42 ts [未注册用户]
160不是一个正确的输入数据吧?
  回复  引用    


标题  
姓名  
主页
Email (博主才能看到) 
验证码 *  看不清,换一张 [登录][注册]
内容(请不要发表任何与政治相关的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      
Google站内搜索



相关文章:

相关链接: