洛洛在散步的时候,看到公园的正方形花坛里开放着许多他不认识的花卉。仔细观察之后,他又发现这些花的种植位置是有规律的。
洛洛发现在正方形花坛的最外层,即第一层上的花都是同一颜色;而花坛的第二层,花的颜色又都是一样的……正方形花坛由若干层花构成,同一层上的花都是同一颜色的,不同层之间的花颜色不一定相同。如下图所示,是一个具有三层花的正方形花坛:
在回到家后,洛洛还记得花坛有几层花围成,以及每层花的颜色,花的颜色用英文大小写字母来表示。但是洛洛忘记了整个花坛的图像,洛洛希望你根据他的描述,把整个花坛的图像用计算机打印字符的方式表示出来。
输入
第一行输入一个整数 n,表示正方形花坛有n层花。
第二行输入n个字符,第i个字符表示第i层花的颜色。第一层是花坛最外层。第n层是花坛最内层,只有一朵花。
输出
输出2n-1行,由(2n-1)(2n-1)个字符组成的花坛的图像。
样例输入1
3
abC
样例输出1
aaaaa
abbba
abCba
abbba
aaaaa
样例输入2
4
abac
样例输出2
aaaaaaa
abbbbba
abaaaba
abacaba
abaaaba
abbbbba
aaaaaaa
这题其实就是找规律
1.输入n 可以知有几个环以及2n-1行
2.第一行的个数为2n-1,之后每行的个数 递减 2
附上代码
#include<bits/stdc++.h> using namespace std; char a[2005][2005]; char s[1005]; int n; int main(){ scanf("%d",&n); getchar(); //如果不加getchar输入s会有问题,或者也可以用cin输入n gets(s); int k,m; n=n*2-1; k=n;m=n; //k代表每行的个数 for(int i=0;s[i];i++){ // 外层循环控制每个环的字母 for(int j=i;j<k+i;j++) //每层有k个,每个都从i开始 { a[i][j]=a[j][i]=a[n-1][j]=a[j][n-1]=s[i]; //四个面赋值 } n--;k=k-2;//进行完一次 n自减,k减2 }for(int i=0;i<m;i++) { puts(a[i]); } return 0; }
1234567891011121314151617181920212223242526