10个点只对4个,以下是我的代码(C++)。
#include <bits/stdc++.h>
using namespace std;
string str;
void dfs(string str,int bol){
int num1 = 1;
if(bol == 1){
if(str[0] >= '0' && str[0] <= '9'){
num1 = str[0] - '0';
str = str.substr(1,str.size() - 1);
}
if(str[0] >= '0' && str[0] <= '9'){
num1 = num1 * 10 + (str[0] - '0');
str = str.substr(1,str.size() - 1);
}
}
if(str[0] == '[' && bol == 0){
str = str.substr(1,str.size() - 2);
dfs(str,1);
return;
}
while(num1--){
int i = 0;
if(str[0] >= 'A' && str[0] <= 'Z'){
while(++i){
if(str[i - 1] >= 'A' && str[i - 1] <= 'Z'){
printf("%c",str[i - 1]);
}else{
break;
}
}
}
i--;
if(i == str.size() || str[i] == ']'){
continue;
}else{
int j = str.size();
if(str[i + 1] >= '0' && str[i + 1] <= '9'){
while(j--){
if(str[j] == ']'){
break;
}
}
}
if(str[0] == '['){
dfs(str.substr(1,str.size() - 2),1);
continue;
}
dfs(str.substr(i + 1,j - i - 1),1);
i = j;
}
if(str[0] >= 'A' && str[0] <= 'Z'){
while(++i){
if(str[i - 1] >= 'A' && str[i - 1] <= 'Z'){
printf("%c",str[i - 1]);
}else{
break;
}
}
}
}
return;
}
int main(){
cin >> str;
dfs(str,0);
return 0;
}
求错误点,在线等!!!