哈工大 囧 递归从外到里面 画

 http://acm.hrbust.edu.cn/index.php?m=ProblemSet&a=showProblem&problem_id=2085

 

A.囧
Time Limit: 1000 MS Memory Limit: 65536 K
Total Submit: 80 (40 users) Total Accepted: 34 (34 users) Special Judge: No
Description

DS最近很囧,总是不能把妹子哄开心。所以,邪恶的他也想让你们囧一囧。


他给你一个数字 n 让你输出囧字的迭代(详见样例)。

Input

第一行一个整数,代表数据的组数。

每组数据一个整数 n1≤n≤7

Output

每组数据输出一个囧字的图形.

Sample Input
2
1
2
Sample Output
+------+
|      |
| /  \ |
|      |
| +--+ |
| |  | |
| |  | |
+-+--+-+
+--------------+
|              |
|     /  \     |
|    /    \    |
|   /      \   |
|  /        \  |
| /          \ |
|              |
|   +------+   |
|   |      |   |
|   | /  \ |   |
|   |      |   |
|   | +--+ |   |
|   | |  | |   |
|   | |  | |   |
+---+-+--+-+---+
Hint

再友情给个n = 3 的样例,请注意囧字的迭代方式。

+------------------------------+

|                              |

|             /  \             |

|            /    \            |

|           /      \           |

|          /        \          |

|         /          \         |

|        /            \        |

|       /              \       |

|      /                \      |

|     /                  \     |

|    /                    \    |

|   /                      \   |

|  /                        \  |

| /                          \ |

|                              |

|       +--------------+       |

|       |              |       |

|       |     /  \     |       |

|       |    /    \    |       |

|       |   /      \   |       |

|       |  /        \  |       |

|       | /          \ |       |

|       |              |       |

|       |   +------+   |       |

|       |   |      |   |       |

|       |   | /  \ |   |       |

|       |   |      |   |       |

|       |   | +--+ |   |       |

|       |   | |  | |   |       |

|       |   | |  | |   |       |

+-------+---+-+--+-+---+-------+

 

 1 #include<iostream>
 2 #include<stdio.h>
 3 using namespace std;
 4 char d[600][600];
 5 void dayin(int x,int r,int l)
 6 {
 7     if(x<0)
 8         return ;
 9     int n;
10     n=1<<(x+2);
11     for(int i=0; i<n; i++)   //上面一横
12         d[r][l+i]='-';
13         for(int i=0; i<n; i++)
14         {
15             d[r+i][l]='|';
16             d[r+i][l+n-1]='|';
17         }
18     d[r][l]='+';
19     d[r][l+n-1]='+';
20     for(int i=0;i<n;i++)     //下面一横
21         d[r+n-1][l+i]='-';
22     d[r+n-1][l]=d[r+n-1][l+n-1]='+';
23     int xie;
24     xie=(1<<(x+1))-3;
25     for(int i=0; i<xie;i++)
26     {
27         d[r+xie+1 -i][l+1+1+i]='/';   //撇 和 捺
28         d[r+xie+1 -i][l+n-1-1-1-i]='\\';
29     }
30     dayin(x-1,r+n/2,l+n/4);
31 }
32 int main()
33 {
34     int n,t;
35     scanf("%d",&t);
36     while(t--)
37     {
38         scanf("%d",&n);
39         int temp;
40         temp=1<<(n+2);
41         for(int i=0; i<temp; i++)
42             for(int j=0; j<temp; j++)
43                 d[i][j]=' ';
44         dayin(n,0,0);
45         for(int i=0; i<temp; i++)
46         {
47             for(int j=0; j<temp; j++)
48                 printf("%c",d[i][j]);
49             printf("\n");
50         }
51     }
52     return 0;
53 }

 

#include<iostream>#include<stdio.h>using namespace std;char d[600][600];void dayin(int x,int r,int l){    if(x<0)        return ;    int n;    n=1<<(x+2);    for(int i=0; i<n; i++)   //上面一横        d[r][l+i]='-';        for(int i=0; i<n; i++)        {            d[r+i][l]='|';            d[r+i][l+n-1]='|';        }    d[r][l]='+';    d[r][l+n-1]='+';    for(int i=0;i<n;i++)     //下面一横        d[r+n-1][l+i]='-';    d[r+n-1][l]=d[r+n-1][l+n-1]='+';    int xie;    xie=(1<<(x+1))-3;    for(int i=0; i<xie;i++)    {        d[r+xie+1 -i][l+1+1+i]='/';   //撇 和 捺        d[r+xie+1 -i][l+n-1-1-1-i]='\\';    }    dayin(x-1,r+n/2,l+n/4);}int main(){    int n,t;    scanf("%d",&t);    while(t--)    {        scanf("%d",&n);        int temp;        temp=1<<(n+2);        for(int i=0; i<temp; i++)            for(int j=0; j<temp; j++)                d[i][j]=' ';        dayin(n,0,0);        for(int i=0; i<temp; i++)        {            for(int j=0; j<temp; j++)                printf("%c",d[i][j]);            printf("\n");        }    }    return 0;}

 

posted @ 2014-03-30 15:02  galaxy77  阅读(483)  评论(0编辑  收藏  举报