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;
}
网友评论