codeup27969 蛇形填字母

codeup27969  蛇形填字母

时空限制    1000ms/128MB

题目描述

你对迷宫感兴趣吗?现在请你设计一个迷宫,要求你输入一个整形数字n(0<n<101),然后就形成一个n*n规模的迷宫方阵。 若输入是 5,那么将会输出如下迷宫。迷宫按字母顺序从外向内旋转,若26个字母用完则从A开始循环使用。

                                        A B C D E 
                                        P Q R S F 
                                        O X Y T G 
                                        N W V U H 
                                        M L K J I

输入

第一行输入一个整数T,这个数字为测试数据的个数。从第二行开始会有T行测试数据,
每行测试数据输入一个数n,表示迷宫的规模。

输出

与测试数据对应,刚好有T个迷宫。在每个迷宫中,注意每行中每两个字母间有一个空
格,每行最后一个字母后没有空格。

样例输入

3
3
4
6

样例输出

A B C
H I D
G F E
A B C D
L M N E
K P O F
J I H G
A B C D E F
T U V W X G
S F G H Y H
R E J I Z I
Q D C B A J
P O N M L K

 

代码

#include<iostream>
#include<cstring>
using namespace std;
const int N = 105;
char a[N][N];

int main(){
	int T,n,x,y,k;
	cin>>T;
	while (T--){
		cin>>n;
		memset(a,0,sizeof(a));
		char ch=a[1][1]='A';                     
		x=y=k=1;
		while (k<n*n){
			while (y+1<=n && !a[x][y+1]) a[x][++y]=(++ch)>'Z'?ch-=26:ch,k++;
			while (x+1<=n && !a[x+1][y]) a[++x][y]=(++ch)>'Z'?ch-=26:ch,k++;
			while (y-1>=1 && !a[x][y-1]) a[x][--y]=(++ch)>'Z'?ch-=26:ch,k++;
			while (x-1>=1 && !a[x-1][y]) a[--x][y]=(++ch)>'Z'?ch-=26:ch,k++;
		}
		for (int i=1; i<=n; i++){
			for (int j=1; j<n; j++) cout<<a[i][j]<<" ";
			cout<<a[i][n]<<endl;
		}
	}
	return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值