目錄
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(* ̄▽ ̄*)ブ