SCAU 2019初出茅庐 18598 开门,你的圣诞礼物

描述:

快要到圣诞节了,说到圣诞节首先让人想到圣诞老人和圣诞树。

实际上,圣诞节是为了庆祝耶稣的降生,但是这跟我们没有什么关系,有兴趣可以选修英语选修中讲述历史文化的圣经课。

所以圣诞节跟我们有什么关系呢,还是有关系的,steam平台上的绝大部分游戏会在这段时间打折。

为了迎接圣诞节的特大折扣,sen准备装饰n颗圣诞树,这些树的高度可能不相同。

但是sen太忙了,他还有很多屁事要做,他先想好了几个大概的种法,等你用程序画个图来看看最终结果是怎么样的。

圣诞树的画法如下:

高度为2的圣诞树:
   * 
  /-
/-| |-
  | |

高度为3的圣诞树:
     *
    /-
  /-| |-
/---| |---
    | |

高度为4的圣诞树:
       *
      /-
    /-| |-
  /---| |---
/-----| |-----
      | |

高度为5的圣诞树:
         *
        /-
      /-| |-
    /---| |---
  /-----| |-----
/-------| |-------
        | |

sen觉得你很聪明所以不用给出更多的例子,更高的高度以此类推就好了

圣诞树按给出的顺序种 每棵树之间用一个空格隔开

输入格式 :

第一行输入t表示case数(1<=t<=100)

每个case第一行输入n表示有n颗圣诞树(1<=n<=5)

每个case第二行n个数字ai表示圣诞树的高度(2<=ai<=10)

输出格式: 

对于每个case输出最终的样子

每个case之后需要加一个换行(因此最后一个case的末尾会多出两行)

输入样例: 

2
2
4 2
3
4 2 3

 输出样例:

       *
      /-
    /-| |-        *
  /---| |---     /-
/-----| |----- /-| |-
      | |         | |

       *
      /-                    *
    /-| |-        *        /-
  /---| |---     /-     /-| |-
/-----| |----- /-| |- /---| |---
      | |         | |       | |

提示: 

这道题真是太简单了 如果你5分钟写出来 圣诞老人就会在2019圣诞节的晚上给你送礼物

 代码实现(参考):

#include<iostream>
#include<string.h>
using namespace std;
const int maxTop=12,maxBreadth=200; 
int main()
{
	int t;
	scanf("%d",&t);
	while(t--)
	{
		int n;
		scanf("%d",&n);
		char g[maxTop][maxBreadth];
		memset(g,' ',sizeof(g));//初始化为空格 
		int h[10],maxh,maxb=n-1,d,pre;
		for(int i=0;i<n;i++) 
		{
			scanf("%d",&h[i]);
			if(i==0) maxh=h[0];
			else if(h[i]>maxh) maxh=h[i];//确定最高树的高度 
			maxb+=4*h[i]-1;//确定所有树的宽度和 
		}
		for(int i=0,pre=0;i<n;i++)
		{
			d=pre+2*h[i]-1;//确定树的对称轴所在坐标 
			g[maxTop-h[i]-2][d]='*';
			for(int j=maxTop-1;j>maxTop-1-h[i];j--)
				g[j][d-1]=g[j][d+1]='|';
			for(int j=maxTop-1-h[i],k=0;j<maxTop-1;j++,k+=2)
			{
				g[j][d+k]=g[j][d-k]='-';
				g[j][d+k+1]='\';
				g[j][d-k-1]='/';
				if(k>2)
					for(int l=k-1;l>=2;l--)
						g[j][d+l]=g[j][d-l]='-';
			}
			pre+=4*h[i];//确定下一棵树与左边界的距离 
		}
		for(int i=maxTop-maxh-2;i<maxTop;i++)
		{
			for(int j=0;j<maxb;j++)
				putchar(g[i][j]);
			puts("");
		}
		puts("");
	}
	return 0;
}

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
THE END
分享
二维码
< <上一篇
下一篇>>