mirror of
https://github.com/Kiritow/OJ-Problems-Source.git
synced 2024-03-22 13:11:29 +08:00
Create 1227.c
This commit is contained in:
parent
ab1804f3b8
commit
4734ada571
118
QUSTOJ/1227.c
Normal file
118
QUSTOJ/1227.c
Normal file
@ -0,0 +1,118 @@
|
|||||||
|
#include <stdio.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <string.h>
|
||||||
|
|
||||||
|
typedef struct
|
||||||
|
{
|
||||||
|
char data;
|
||||||
|
int vis;
|
||||||
|
}pack;
|
||||||
|
|
||||||
|
pack screen[102][102];
|
||||||
|
|
||||||
|
#define RIGHT 0
|
||||||
|
#define DOWN 1
|
||||||
|
#define LEFT 2
|
||||||
|
#define UP 3
|
||||||
|
|
||||||
|
void deal(int incmax)
|
||||||
|
{
|
||||||
|
memset(screen,0,sizeof(pack)*102*102);
|
||||||
|
char letter='A';
|
||||||
|
int cx,cy,towards,i;
|
||||||
|
int times=incmax*incmax;
|
||||||
|
for(i=0;i<incmax+2;i++)
|
||||||
|
{
|
||||||
|
screen[0][i].vis=1;
|
||||||
|
screen[i][0].vis=1;
|
||||||
|
screen[incmax+1][i].vis=1;
|
||||||
|
screen[i][incmax+1].vis=1;
|
||||||
|
}
|
||||||
|
for(cx=1,cy=1,towards=RIGHT;times>0;times--)
|
||||||
|
{
|
||||||
|
screen[cx][cy].data=letter++;
|
||||||
|
screen[cx][cy].vis=1;
|
||||||
|
(letter>'Z')?(letter='A'):(NULL);
|
||||||
|
switch(towards)
|
||||||
|
{
|
||||||
|
case RIGHT:
|
||||||
|
{
|
||||||
|
if(screen[cx][cy+1].vis==1)
|
||||||
|
{
|
||||||
|
towards++;
|
||||||
|
cx++;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
cy++;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case DOWN:
|
||||||
|
{
|
||||||
|
if(screen[cx+1][cy].vis==1)
|
||||||
|
{
|
||||||
|
towards++;
|
||||||
|
cy--;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
cx++;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case LEFT:
|
||||||
|
{
|
||||||
|
if(screen[cx][cy-1].vis==1)
|
||||||
|
{
|
||||||
|
towards++;
|
||||||
|
cx--;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
cy--;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case UP:
|
||||||
|
{
|
||||||
|
if(screen[cx-1][cy].vis==1)
|
||||||
|
{
|
||||||
|
towards=0;
|
||||||
|
cy++;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
cx--;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void print_map(int incmax)
|
||||||
|
{
|
||||||
|
int x,y;
|
||||||
|
for(x=1;x<incmax+1;x++)
|
||||||
|
{
|
||||||
|
for(y=1;y<incmax;y++)
|
||||||
|
{
|
||||||
|
printf("%c ",screen[x][y].data);
|
||||||
|
}
|
||||||
|
printf("%c\n",screen[x][y].data);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
int main()
|
||||||
|
{
|
||||||
|
int all,inc;
|
||||||
|
scanf("%d",&all);
|
||||||
|
for(;all>0;all--)
|
||||||
|
{
|
||||||
|
scanf("%d",&inc);
|
||||||
|
deal(inc);
|
||||||
|
print_map(inc);
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user