题目
思路
说实话,这题我确实没有比较好的思路。
代码参考的是柳神的。
做法是:
用字符串储存d。
通过循环,遍历到所求的第n项。
求每一项时,外循环遍历目前字符串,内循环寻找和前一位不同的字符位置。当找到不同的字符或者遍历完后跳出内循环,此时j就记录了和前一位字符不同的字符的下标。
通过j-i就得到了前一位字符的出现次数。再用to_string加到字符串t中。
令d=t。继续循环。
AC代码
#include<bits/stdc++.h>
using namespace std;
int main(){
int n,j; //用j来记录与前项不同的字符下标
string d; cin>>d>>n;
for(int cnt=1;cnt<n;cnt++){ //从第一项开始到第n项
string t;
for(int i=0;i<d.length();i=j){
for(j=i; j<d.length() && d[j]==d[i];j++); //不用执行操作,当找到与前项不同的字符时,结束循环j为不同字符的下标
t +=d[i] + to_string(j-i);
}
d=t;
}
cout<<d;
return 0;
}