38.Count and Say

The count-and-say sequence is the sequence of integers with the first five terms as following:

1. 1

2.    11

3.    21

4.    1211

5.    111221

最开始不是很懂规律,后来才知道就是数一下前面相同数字的个数,比如5前面4的序列是1211,就是1个“1”,1个“2”,2个“1”,(不连续的不能合并),所以5的序列就是111221。

我使用了递归算法获取前一个数的序列,然后进行统计。

注意点:

1.判断递归的边界。

2.统计是判断序列的边界。

3.序列的类型为字符串。

代码:

stringcountAndSay(intn)

{

    if(n==1)  //判断递归边界

        return"1";

    stringArray;

    Array="";

    intcount=1;

    stringres=countAndSay(n-1);

    cout<<"result="<

    for(inti=0;i

    {

        if(i==res.length()-1)  //判断序列边界

        {

            Array+=to_string(count);

            Array+=res[i];

            cout<

            returnArray;


        }

        else if(res[i]==res[i+1])  //统计相同的数字

        {

            count++;

            continue;

        }

        Array+=to_string(count);

        Array+=res[i];

        cout<

        count=1;

    }

    returnArray;

}

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容