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;

}

你可能感兴趣的:(38.Count and Say)