房间问题(C,C++)
如图,1 2 3 4 5 6 7
| | | | | | | |1 n
| | | | | | | |2 w<-|->e
| | | | | | | |3 s
| | | | | | | |4
^
箭头指明被拆除的墙(根据输出)
编程计算:
1.该建筑中有多少个房间;
2.最大的房间有多大;
3.拆除建筑中的某一堵墙,以形成一个尽可能大的房间,指出该墙。
该建筑分成m*n个方块(m<50,n<50),每个方块可有0~4堵墙(0表示无墙)。
输入:
4
7
11 6 11 6 3 10 6
7 9 6 13 5 15 5
1 10 12 7 13 7 5
13 11 10 8 10 12 13
注释:
用一个数字表示一个方块。
A:4表示南北方向的方块数,7表示东西方向的方块数;
B:每个方块中墙的特征由数字P来描述(0<P<15)。数字P是下面的可能取得数字之和:
1(西墙 west)
2(北墙 north)
4(东墙 east)
8(南墙 south)
室内的墙被定义两次:例如方块(1,1)中的南墙也被位于其北面的方块(2,1)定义了一次。
C:建筑中至少有两个房间。
输出:
5
9
(4,1)(4,2)
注释:
第一行写房间总数;
第二行写最大房间的面积(方块数);
第三行写应拆除位于哪两个放歌间的一堵墙,只要给出其中一个即可。