花坛(第一篇博客随便来一题试试水)

花坛

题目描述

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

在这里插入图片描述
在回到家后,洛洛还记得花坛有几层花围成,以及每层花的颜色,花的颜色用英文大小写字母来表示。但是洛洛忘记了整个花坛的图像,洛洛希望你根据他的描述,把整个花坛的图像用计算机打印字符的方式表示出来。

输入

第一行输入一个整数 n,表示正方形花坛有 n 层花。

第二行输入 n 个字符,第 i 个字符表示第 i 层花的颜色。第一层是花坛最外层。第n 层是花坛最内层,只有一朵花。

输出

输出 2n-1 行,由(2n-1)(2n-1)个字符组成的花坛的图像。

样例输入

3
abC

样例输出

aaaaa
abbba
abCba
abbba
aaaaa
提示
第一层是颜色为字符 a 的花,在最外层;
第二层是颜色为字符 b 的花,在第二层。
第三层是颜色为字符 c 的花,只有一朵,在最内层。
对于 20%的数据,保证只有一种花,颜色为字符 a;
对于 50%的数据,保证 1 ≤ n ≤ 10,颜色只用小写字母表示,
对于 80%的数据,保证 1 ≤ n ≤ 100。
对于 100%的数据,保证 1 ≤ n ≤ 1000,颜色用小写字母、大写字母表示。
注意:对于不同层的花朵来说,可能存在颜色相同的情况。

思路

基本是白给的题,找下规律就出来了。(第一篇博文看一下写出来的效果)
直接上代码:

#include <bits/stdc++.h>
using namespace std;
char ch[1005];
int n;
int main(){
cin>>n;
for(int i=1;i<=n;i++)
cin>>ch[i];
for(int i=1;i<=n;i++)
{
for(int j=1;j<=2*n-1;j++){   
   if(j<=i)cout<<ch[j];
   else if(2*n-1-j+1<=i)
   cout<<ch[2*n-1-j+1];
   else
  cout<<ch[i];  
 }
  cout<<endl;
  }
 for(int i=n-1;i>=1;i--){
 for(int j=1;j<=2*n-1;j++){    
   if(j<=i)cout<<ch[j];
   else if(2*n-1-j+1<=i)
   cout<<ch[2*n-1-j+1];
   else
    cout<<ch[i]; 
   }
 cout<<endl;
  }
 }

猜你喜欢

转载自blog.csdn.net/Nefeertari/article/details/107427720