Wood_K
See gull
posts - 3,  comments - 7,  trackbacks - 0

 点击进入该题目

 1#include <stdio.h>
 2void 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}

42int 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 阅读(482) 评论(0)  编辑 收藏 引用

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理



<2012年7月>
24252627282930
1234567
891011121314
15161718192021
22232425262728
2930311234

常用链接

留言簿(1)

随笔档案

文章分类

文章档案

搜索

  •  

最新评论

阅读排行榜

评论排行榜