点击进入该题目
1
#include <stdio.h>
2
void work(char str[1001],int k,int rec)
3

{
4
int i;
5
int j;
6
int kuo;
7
while(rec--)
8
{
9
for(i = k;str[i] != ')' && str[i] != '\0';)
10
{
11
if(str[i] - 'a' >= 0 && str[i] - 'z' <= 25) /**//*字母*/
12
{printf("%c",str[i]);i++;}
13
else if(str[i] == '(') /**//*括号---递归调用*/
14
{
15
work(str,i + 1,1);
16
for(kuo = 1,i += 1;kuo != 0;i++)
17
{
18
if(str[i] == '(')kuo++;
19
if(str[i] == ')')kuo--;
20
}
21
}
22
else
{ /**//*数字*/
23
if(str[i + 1] - 'a' >= 0 && str[i + 1] - 'a' <= 25) /**//*数字+字母*/
24
{
25
for(j = 0;j < str[i] - '0';j++)
26
printf("%c",str[i + 1]);
27
i += 2;
28
}
29
else if(str[i + 1] == '(') /**//*数字+括号---递归调用*/
30
{
31
work(str,i + 2,str[i] - '0');
32
for(kuo = 1,i += 2;kuo != 0;i++)
33
{
34
if(str[i] == '(')kuo++;
35
if(str[i] == ')')kuo--;
36
}
37
}
38
}
39
}
40
}
41
}
42
int main()
43

{
44
int T;
45
char str[1001];
46
scanf("%d",&T);
47
getchar();
48
while(T--)
49
{
50
gets(str);
51
work(str,0,1);
52
printf("\n");
53
}
54
}

通过递归巧妙的递归调用简化了解题步骤
posted on 2009-05-19 17:27
Wood_K 阅读(530)
评论(0) 编辑 收藏 引用