Sample Input
2 1(1a2b1(ab)1c) 3(ab2(4ab))
Sample Output
abbabc abaaaabaaaababaaaabaaaababaaaabaaaab
#include<stdio.h>
#include<ctype.h>
#include<string.h>
char s[260];
int dfs(int ith)
{
int k,e;
char c;
for(c=s[ith++];ith<=strlen(s)&&c!=')';c=s[ith++])//递归结束的条件是字符串结束或遇到右括号
{
for(k=0;isdigit(c);c=s[ith++])
k=k*10+c-'0';
if(!k) k=1;
if(c=='(')
{
while(k--)
e=dfs(ith);
ith=e;//重置ith的值,到下层递归结束的位置
}
else{
while(k--)
putchar(c);
}
}
if(c==')')
return ith;//返回本次读到结尾的位置
}
int main()
{
int n;
scanf("%d",&n);
while(n--)
{
scanf("%s",s);
dfs(0);//进入递归
printf("\n");
}
return 0;
}
/*
99
3(2a2(ab))aa
*/
3万+

被折叠的 条评论
为什么被折叠?



