xtu oj 1233 Cycle Matrix

题目描述

给定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++){//左1
			for(j=0;j<i;j++){
				a[i][j]=n-j-1+'A';
			}
		}
		for(i=1;i<=len/2;i++){//右1
			for(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

  • 27
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值