输出字符串Count and Say

最近研究输出字符串,稍微总结一下,以后继续补充:

    标题如下:

    The count-and-say sequence is the sequence of integers beginning as follows:
1, 11, 21, 1211, 111221, ...

    1 is read off as "one 1" or 11.
11 is read off as "two 1s" or 21.
21 is read off as "one 2, then one 1" or 1211.

    Given an integer n, generate the nth sequence.

    Note: The sequence of integers will be represented as a string.

    分析:题意是n=1时输出字符串1;n=2时,数前次字符串中的数值个数,因为前次字符串有1个1,所以输出11;n=3时,由于前次字符是11,有2个1,所以输出21;n=4时,由于前次字符串是21,有1个2和1个1,所以输出1211;顺次类推。

    此题我没有找到数学律规,且暂就用最简略的法想做,关键是考核string的作操。

    码代如下:

    每日一道理
信念是巍巍大厦的栋梁,没有它,就只是一堆散乱的砖瓦;信念是滔滔大江的河床,没有它,就只有一片泛滥的波浪;信念是熊熊烈火的引星,没有它,就只有一把冰冷的柴把;信念是远洋巨轮的主机,没有它,就只剩下瘫痪的巨架。

 string numbertostring(int & num)
    {
        string tmp;
        if(num<=9)
        {
           tmp.push_back(num + '0');
        }
        else
        {
            vector<int> over10num;                                 
            while(num>0)                                 
            {                                     
                over10num.push_back(num%10);
                num = num/10;                                 
            }                                 
            int len_num = over10num.size();                                 
            for(int k=len_num-1;k>=0;--k)
            {
                tmp.push_back(over10num[k] + '0');
            }
        }
        return tmp;
    }
    string countAndSay(int n) {
        string s;
        if(n<=0)return s;
        s.push_back('1');
        int number=1;
        while(number!=n)
        {
            string tmp;
            int length = s.length();
            for(int i=0;i<length;)
            {
                int num=1,j=i+1;
                while(j<length&&s[j]==s[i])
                {
                    num++;
                    j++;
                }
                tmp+=numbertostring(num);
                tmp+=s[i];
                i=j;
            }
            number++;
            s=tmp;
        }
        return s;
    }

    

文章结束给大家分享下程序员的一些笑话语录: 据说有一位软件工程师,一位硬件工程师和一位项目经理同坐车参加研讨会。不幸在从盘山公路下山时坏在半路上了。于是两位工程师和一位经理就如何修车的问题展开了讨论。
硬件工程师说:“我可以用随身携带的瑞士军刀把车坏的部分拆下来,找出原因,排除故障。”
项目经理说:“根据经营管理学,应该召开会议,根据问题现状写出需求报告,制订计划,编写日程安排,逐步逼近,alpha测试,beta1测试和beta2测试解决问题。”
软件工程说:“咱们还是应该把车推回山顶再开下来,看看问题是否重复发生。”

你可能感兴趣的:(count)