1、这个很类似于括号匹配问题,用栈来操作,活用string类的话会大大降低编程复杂度。
#include<cstdio>
#include<string>
#include<cstring>
#include<iostream>
using namespace std;
string a[1000010];
char ch;
int main(){
int cnt=0,cnum=0;
while((ch=getchar())!=EOF){
cnum++;
if(ch=='$'){
getchar();
if(cnum==1) continue;
cnt=0;cnum=0;
cout<<a[0]<<endl;
continue;
}
if(ch==' ') continue;
string temp(1,ch);
a[cnt++]=temp;
if(ch==')'){
int p=cnt,num=0;
while(a[p][0]!='(') p--;
string ns;
for(int i=p+1;i<cnt-1;i++){
if(a[i][0]>='0'&&a[i][0]<='9'){
num*=10;
num+=a[i][0]-'0';
}
else ns+=a[i];
}
string newstring;
for(int i=0;i<num;i++) newstring+=ns;
a[p]=newstring;
cnt=p+1;
}
}
return 0;
}