Hrbust 囧(输出图像囧)

Description

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


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

Input

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

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

Output

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

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

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

+------------------------------+
|                              |
|             /  \             |
|            /    \            |
|           /      \           |
|          /        \          |
|         /          \         |
|        /            \        |
|       /              \       |
|      /                \      |
|     /                  \     |
|    /                    \    |
|   /                      \   |
|  /                        \  |
| /                          \ |
|                              |
|       +--------------+       |
|       |              |       |
|       |     /  \     |       |
|       |    /    \    |       |
|       |   /      \   |       |
|       |  /        \  |       |
|       | /          \ |       |
|       |              |       |
|       |   +------+   |       |
|       |   |      |   |       |
|       |   | /  \ |   |       |
|       |   |      |   |       |
|       |   | +--+ |   |       |
|       |   | |  | |   |       |
|       |   | |  | |   |       |
+-------+---+-+--+-+---+-------+

#include<stdio.h>
#define N (1<<8)*8
char c[8][N][N];
void init()
{
    int h=8;
    for(int k=1;k<8;k++)
    {
        for(int i=1;i<=h;i++)
        for(int j=1;j<=h;j++)
        c[k][i][j]=' ';
        h*=2;
    }

    //----第一个囧-----
    for(int j=1;j<=4;j++)
    if(j==1) c[1][1][j]=c[1][1][8-j+1]='+';
    else c[1][1][j]=c[1][1][8-j+1]='-';
    for(int i=2;i<8;i++)
    c[1][i][1]=c[1][i][8]='|';
    c[1][3][3]='/';c[1][3][6]='\\';
    c[1][5][3]=c[1][5][6]='+';
    c[1][5][4]=c[1][5][5]='-';
    for(int i=6;i<8;i++)
    c[1][i][3]=c[1][i][6]='|';
    for(int j=1;j<=4;j++)
    if(j%2) c[1][8][j]=c[1][8][8-j+1]='+';
    else c[1][8][j]=c[1][8][8-j+1]='-';
}
void set()
{
    int h=8;
    for(int k=2;k<=7;k++)//第k个囧
    {
        h*=2;
        for(int j=1;j<=h/2;j++)//第一行
        if(j==1) c[k][1][j]=c[k][1][h-j+1]='+';
        else c[k][1][j]=c[k][1][h-j+1]='-';

        for(int i=2;i<h;i++)//第一列和最后一列(除第一行和最后一行)
        c[k][i][1]=c[k][i][h]='|';
        for(int t=1;h/2-t>2;t++)//那个八字
        {
            c[k][2+t][h/2-t]='/';
            c[k][2+t][h/2+1+t]='\\';
        }
        for(int i=h/2+1;i<=h;i++)//大囧中的多个小囧就是前一个囧的图形
        for(int j=(1<<k)+1;j<=h-(1<<k);j++)
        c[k][i][j]=c[k-1][i-h/2][j-(1<<k)];

        for(int j=1;j<=(1<<k);j++)//最后一行的最两边,中间的是前一个囧的最后一行
        if(j==1)c[k][h][j]=c[k][h][h-j+1]='+';
        else c[k][h][j]=c[k][h][h-j+1]='-';
    }
}
int main()
{
    init();
    set();
    int h,n;
    while(scanf("%d",&n)>0)
    {
        h=1<<(n+2);
        for(int i=1;i<=h;i++)
        {
            for(int j=1;j<=h;j++)
            printf("%c",c[n][i][j]);
            printf("\n");
        }
    }

}


  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值