打印图形
来源:互联网 发布:济南公交 大数据 编辑:程序博客网 时间:2024/05/01 16:32
题目描述
你对迷宫感兴趣吗?现在请你设计一个迷宫,要求你输入一个整形数字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
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
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
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 <stdio.h>
#include <stdlib.h>
int main()
{
char a[101][101];
char flag;
int x,y,T,m,n,k,p;
int f(int x,int y,int n);
scanf("%d",&T);
for(int i=1;i<=T;i++)
{
scanf("%d",&n);
m=1; x=y=1;
flag='A'; p=n*n;
while(m<=p)
{
a[x][y]=flag; flag++;
if(flag==91) flag='A';//注意这个题是循环使用字母
k=f(x,y,n);
switch(k)
{
case 1:x++;break;
case 2:y++;break;
case 3:x--;break;
case 4:y--;break;
}
m++;
}
for(int l=1;l<=n;l++)
{
for(int j=1;j<=n-1;j++)
{
printf("%c ",a[j][l]);
}
printf("%c\n",a[n][l]);
}
}
return 0;
}
int f(int x,int y,int n)//划分区域,分类讨论
{ while(1)
{
if(x>=y&&x+y<=n)
{ return 1; break; }
if(x+1==y&&x+y<=n)
{ return 1; break; }
if(x>y&&x+y>n)
{ return 2; break; }
if(x<=y&&x+y>n+1)
{ return 3; break; }
if(x<y&&x+y<=n+1&&x+1!=y)
{ return 4; break; }
break;
}
}
0 0
- 打印图形
- 打印图形
- 打印图形
- 打印图形
- 打印图形
- 打印图形
- 打印图形
- 打印图形
- 打印图形
- 图形打印
- 打印图形
- 打印***图形
- 打印图形
- 打印图形
- 打印图形
- 打印图形
- 打印图形
- 图形打印
- 百度地图局域网使用
- Android环境搭建-20151210
- Objective-C 歌词解析
- poj--1300
- 数据标准化的原因及方法
- 打印图形
- 访问彩色像素的理解及疑惑
- android学习笔记——创建自定义控件
- Android 源码解析: 图片加载库Picasso 2 Cache机制
- selenium webdriver2.0实现邮件发送
- js append 含有引号等特殊符号的报错
- Unity学习笔记(3) --- Unity的界面排版:初识GUILayout
- LeetCode 41 First Missing Positive
- ubuntu14.04 64bits操作系统下 qt5.3.0的安装配置(doxygen,astyle),qt卸载