zzuli2470: 迷宫

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;
} 
原文地址:https://www.cnblogs.com/zyq1758043090/p/11852837.html