題目描述
給定N,輸出一個N*N的矩陣,矩陣為N層,每層是一個字符,從A到Z。 比如說N=3,矩陣為
CCCCC CBBBC CBABC CBBBC CCCCC
輸入
第一行是一個整數K(K≤50),表示樣例數。 每個樣例占1行,為一個整數N(1≤N≤26)。
輸出
每個樣例輸出對應的矩陣,行尾沒有多余的空格。
樣例輸入
3 1 2 3
樣例輸出
A BBB BAB BBB CCCCC CBBBC CBABC CBBBC CCCCC
AC代碼
#include<stdio.h>
int main()
{int T;scanf("%d",&T);while(T--){int n,i,j;scanf("%d",&n);int len=2*n-1;//行數 char a[100][100]={};for(i=0;i<=len/2;i++){//上 for(j=i;j<len-i;j++){a[i][j]=n-i+'A'-1;}} for(i=1;i<=len/2;i++){//左1for(j=0;j<i;j++){a[i][j]=n-j-1+'A';}}for(i=1;i<=len/2;i++){//右1for(j=len-1;j>=len-i;j--){a[i][j]='A'+j-n+1;}}for(i=len-1;i>=len/2+1;i--){//下 for(j=len-i-1;j<=i;j++){a[i][j]='A'+i-n+1;}}for(i=len/2+1;i<len-1;i++){//左2 for(j=0;j<=n-2-i+len/2;j++){a[i][j]=n-j-1+'A';}}for(i=len/2+1;i<len-1;i++){//右2 for(j=len-1;j>=i+1;j--){a[i][j]=j-n+1+'A';}}for(i=0;i<len;i++){for(j=0;j<len;j++){printf("%c",a[i][j]);}printf("\n");}} }
解題思路:利用二維數組進行打印,分6塊找規律即可。找規律要耐心啊!
如n=3時
上:CCCCC? ? ? ?
? ? ? ? ?BBB?
? ? ? ? ?? A
下? ?BBB
? ? CCCCC