Description | ||
题目描述 给定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 |
思路:用二维矩阵来写
#include<stdio.h>
int main()
{
int K,n,i,j,m;
int arr[100][100];
scanf("%d",&K);
while(K--)
{
int x=0,len;//x是偏移量,本题每次偏移1位,比如arr[1][1]到arr[2][2]
scanf("%d",&n);
m=n;//因为我的n发生了变化
//所以我要用一个等于他的量来代替它干活
for(j=1;j<=m;j++)
{
len=2*n-1;
for(i=1;i<=len;i++)
{
arr[x+1][x+i]=n;//x=0
arr[x+len][x+i]=n;
arr[x+i][x+1]=n;
arr[x+i][x+len]=n;
}
x++;
n--;
}
for(i=1;i<=2*m-1;i++)
{
for(j=1;j<=2*m-1;j++)
{
printf("%c",arr[i][j]+65-1);
}
printf("\n");
}
}
return 0;
}