花坛

题目描述
【问题描述】
洛洛在散步的时候,看到公园的正方形花坛里开放着许多他不认识的花卉。仔细观察之后,他又发现这些花的种植位置是有规律的。
洛洛发现在正方形花坛的最外层,即第一层上的花都是同一颜色;而花坛的第二层,花的颜色又都是一样的……正方形花坛由若干层花构成,同一层上的花都是同一颜色的,不同层之间的花颜色不一定相同。如下图所示,是一个具有三层花的正方形花坛:

在回到家后,洛洛还记得花坛有几层花围成,以及每层花的颜色,花的颜色用英文大小写字母来表示。但是洛洛忘记了整个花坛的图像,洛洛希望你根据他的描述,把整个花坛的图像用计算机打印字符的方式表示出来。
【输入】
第一行输入一个整数 n,表示正方形花坛有n层花。
第二行输入n个字符,第i个字符表示第i层花的颜色。第一层是花坛最外层。第n层是花坛最内层,只有一朵花。
【输出】
输出2n-1行,由(2n-1)(2n-1)个字符组成的花坛的图像。
【输入输出样例】
样例输入1
样例输入2
3
abC

4
abac
样例输出1
样例输出2
aaaaa
abbba
abCba
abbba
aaaaa

aaaaaaa
abbbbba
abaaaba
abacaba
abaaaba
abbbbba
aaaaaaa

【样例解释】
样例1,即如上图,只有三层花:
第一层是颜色为字符a的花,在最外层;
第二层是颜色为字符b的花,在第二层。
第三层是颜色为字符c的花,只有一朵,在最内层。
【数据范围约定】
对于20%的数据,保证只有一种花,颜色为字符a;
对于50%的数据,保证1 ≤ n ≤ 10,颜色只用小写字母表示,
对于80%的数据,保证1 ≤ n ≤ 100。
对于100%的数据,保证1 ≤ n ≤ 1000,颜色用小写字母、大写字母表示。
注意:对于不同层的花朵来说,可能存在颜色相同的情况。

#include<bits/stdc++.h>
using namespace std;
int a,n[2005][2005],b;
char x[1005];
int main()
{
    
    
	cin>>a;
	cin>>x;
	b=a*2-1;
	for(int i=1;i<=b;i++)
		for(int j=1;j<=b;j++)
		{
    
    
			if(i+j<=b+1)
				n[i][j]=min(i,j);
			else
				n[i][j]=b-max(i,j)+1;
		}
	for(int i=1;i<=b;i++)
	{
    
    
		for(int j=1;j<=b;j++)
			cout<<x[n[i][j]-1];
		cout<<endl;
	}
	return 0;
}

猜你喜欢

转载自blog.csdn.net/m0_52628784/article/details/112430277