1140 Look-and-say Sequence
题目
https://pintia.cn/problem-sets/994805342720868352/problems/994805344490864640
题意
题目所给样例如下:
D, D1, D111, D113, D11231, D112213111, ...
拿其中的D11231, D112213111举例,后一个是用来描述前一个的 D112213111表示前一串数字中从左到右为1个D,2个1,1个2,1个3,1个1,正好与D11231相符(D表示某个数字)
题解
用字符串存储数字,遍历字符串并通过cnt记录连续相同数字的数量,通过tmp+=(s[i]+to_string(cnt))作为临时存储,最后将tmp赋给s即可
AC代码
#include<bits/stdc++.h>
using namespace std;
int main()
{
int d,n;
scanf("%d %d",&d,&n);
string s=to_string(d),tmp="";
for(int t=2;t<=n;t++)
{
int cnt=1;
for(int i=0;i<s.size();i++)
{
if(i==s.size()-1||s[i]!=s[i+1])
{
tmp+=(s[i]+to_string(cnt));
cnt=1;
}
else cnt++;
}
s=tmp,tmp="";
}
printf("%s",s.c_str());
}
|