目录
1,题目描述
Sample Input:
1 8
Sample Output:
1123123111
题目大意
( 看了N遍,终于。。。)直接介绍例子吧
- D
- D1(对1的描述:只有一个D)
- D111(对2的描述:一个D,一个1)
- D113(对3的描述:一个D,三个1)
- D11231(对4的描述:一个D,两个1,一个3)
2,思路
简单来说就是不断对上一个字符串的数字进行统计,将连续的几个数字合并。
index指向当前的元素s[index],num记录与当前元素相同的元素数目,然后将s[index]与num的字符串形式拼接,进行下一轮迭代。
3,AC代码
#include<bits/stdc++.h>
using namespace std;
int main(){
#ifdef ONLINE_JUDGE
#else
freopen("1.txt", "r", stdin);
#endif // ONLINE_JUDGE
int D, N;
string s;
cin>>D>>N;
s = to_string(D);
for(int i = 1; i < N; i++){
int index = 0, num; //index遍历字符串s num记录连续相同元素数目
string temp; //记录新的字符串
while(index < s.size()){
num = 1;
temp += s[index]; //拼接元素
while(index < s.size() - 1 && s[index] == s[index+1]){
index++;
num++;
}
index++; // !!!
temp += to_string(num);//拼接数目
}
s = temp; //替代原先的字符串 完成一次迭代操作
}
cout<<s;
return 0;
}
4,解题过程
一发入魂o(* ̄▽ ̄*)ブ