链接
[http://acm.hdu.edu.cn/showproblem.php?pid=1274]
代码
反正就靠你C语言的递归和函数
#include<iostream>
#include<string>
#include<string.h>
#include<algorithm>
using namespace std;
int len;
string s;
int fun(int n){
int i,tem; char c;
for(c=s[n++];c!=')'&&n<len;c=s[n++]){//终止条件遇到 ')'和遍历完串
for(i=0;isdigit(c);c=s[n++])//如果遇到数字符
i=i*10+c-'0';
if(!i) i=1;//如果是字母就输出
if(c=='('){//如果遇到 '('递归调用函数
while(i--)
tem=fun(n);
n=tem;//更新n的值到下层递归开始的位置
}
else{
while(i--)
putchar(c);
}
}
if(c==')') return n;//返回本次读到的结束位置
}
int main(){
int t;
freopen("in.txt","r",stdin);
cin>>t;
while(t--){
cin>>s;
len=s.length();
fun(0);
cout<<endl;
}
return 0;
}