http://acm.zzuli.edu.cn/problem.php?id=2470
题目描述
X星球没有监狱,对于哪些犯罪的人。就是把他们放入迷宫里慢慢惩罚他们。
你作为一个迷宫构建师。你的任务就是生成符合要求的迷宫。
对于一个大小为n*m的迷宫,第一行房间编号从左往右为1~m, 第二行
房间的编号为m+1~2*m,以此类推。共有n*m个房间。
我们希望有的房间能到达另外的房间。所以对生成的迷宫有q个要求
对于每一个要求:k ch。k代表房间编号,ch代表开口的方向。一共有两种取值:
➀W:向下开口 ➁R:向右开口。
题目数据保证:➀迷宫的四周墙壁没有开口。 ➁要求可能重复
输入
第一行输入三个整数:n, m, q。 (1<=n<=50, 1<=m<=50, 0=<q<=2*n*m-n-m)
接下来的q行,每一行输入一个k, ch (1<=k<=n*m, ch={'W', 'R'})
输出
生成符合要求的迷宫
样例输入
4 6 6 16 W 11 R 11 R 16 W 1 R 22 R
样例输出
+---+---+---+---+---+---+ | | | | | | +---+---+---+---+---+---+ | | | | | | +---+---+---+---+---+---+ | | | | | | | +---+---+---+ +---+---+ | | | | | | +---+---+---+---+---+---+
#include<stdio.h>
#define N 55
int temp1[N*N],temp2[N*N];
int main ()
{
int m,n,i,j,q,k;
char ch;
scanf("%d%d%d",&n,&m,&q);
while(q--)
{
scanf("%d %c",&k,&ch);
if(ch=='W')
temp1[k]=1;
else if(ch=='R')
temp2[k]=1;
}
for(i=0;i<m;i++)
printf("+---");
printf("+
");
for(i=0;i<n;i++)
{
for(j=1;j<=m;j++)
if(temp2[i*m+j-1]==0)
printf("| ");
else
printf(" ");
printf("|
");
for(j=1;j<=m;j++)
if(temp1[i*m+j]==0)
printf("+---");
else
printf("+ ");
printf("+
");
}
return 0;
}