报数
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/250b20451a86e896deba3926eaffae58.png)
class Solution {
public:
string countAndSay(int n) {
//使用的是什么算法呢
if (n == 1)
return "1";
if (n == 2)
return "11";
vector<string> a(n + 1);
a[0]="0";
a[1] = "1";
a[2] = "11";
//vector<string> a(n + 1);
int index =3 ;
int count = 1;//表示每一个数计数是多少
while (index <= n)
{
string temp;
string pre_temp = a[index - 1];
//根据前一个进行相应的查询过程
//++count;//先加1
for (int i = 0; i<pre_temp.size(); ++i)
{
if (i == pre_temp.size() - 1)
{
temp.append(1, count + '0');
temp.append(1, pre_temp[i]);//是前一个的数
count = 1;//置零
a[index]=temp;
break;
}
if (pre_temp[i] == pre_temp[i + 1])
{
++count;
}
else
{
temp.append(1, count + '0');
temp.append(1, pre_temp[i]);//是前一个的数
count = 1;//置零
}
}
++index;
}
return a[n];
}
};
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/6c795e163a2169d50ec0db8b934ebf6b.png)