首页 > 其他 > 详细

count and say

时间:2014-10-27 22:52:49      阅读:388      评论:0      收藏:0      [点我收藏+]
 1 ```
 2 class Solution{
 3     string result;
 4     public:
 5     //根据数组前一个数,count and say 构造出后一个数
 6         void generate(string s,string &result)
 7         {
 8             result=string();
 9             string::iterator i=s.begin();
10             while(i != s.end())
11             {
12                 char cur=*i;
13                 int count=1;
14                 i++;
15                 while(i != s.end() && *i == cur)
16                 {
17                     count++;
18                     i++;
19                 }
20                 result.push_back(count+0);
21                 result.push_back(cur);
22 
23             }
24 
25         }
26         //n相当于数组的下标,n是几就调用上面的函数几次,这样就反复调用,每次都以前一个为参数,得到答案
27         string countAndSay(int n){
28 
29             for(int i=1;i<n;i++)
30             {
31                 
32                 generate(result,result);
33             }
34             return result;
35         }
36 };
37 
38 ```

首先,我们发现一点,那个数组中前一个数字按照count and say的方式译码的结果就是后一个数,那么我先写了一个函数,功能是给定前一个数,计算出后一个数。

那么要实现的是求出第n个数,直接循环n-1次,每次的输入是上一次的输出即可。

count and say

原文:http://www.cnblogs.com/gaoduan/p/4055218.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!