回 帖 发 新 帖 刷新版面

主题:帮忙

作业5、房间问题
程序名称:castle.pas,c,c++
输入文件:castle.in
输出文件:castle.out
问题描述:
一座城堡被分成m*n个方块(m≤50,n≤50),每个方块可有0~4堵墙(0表示无墙)。下面表示出了建筑平面图:
图中的加粗黑线代表墙。几个连通的方块组成房间,房间与房间之间一定是用黑线(墙)隔开的。
现在要求你编一个程序,解决以下三个问题:
1、该城堡中有多少个房间;
  2、最大的房间有多大;
  3、拆除城堡中的某一堵墙(城堡最外一圈的围墙不能拆),以形成一个尽可能大的房间。指出该墙。

输入数据:
  平面图以数字形式存储在castle.in文件中,用一个数字表示一个方块。
 ●第一行一个整数m(m≤50),表示房子南北方向的长度。
    第二行一个整数n(n≤50),表示房子东西方向的长度。
 ●后面的m行,每行有n个整数,每个整数都表示平面图对应位置的方块的特征。每个方块中墙的特征由数字P来描述(0≤P≤15)。数字P是下面的可能取的数字之和:
  1(西墙 west)
  2(北墙 north)
  4(东墙 east)
  8(南墙 south)
  室内的墙被定义两次: 例如方块 (1, 1)中的南墙也被位于其南面的方块(2,1)定义了一次。
 ●建筑中至少有两个房间。

输出数据:
  在输出文件castle.out中,
  第1行:一个整数,表示房间总数;
  第2行:一个整数,表示最大房间的面积(方块数);
  第3行:两个整数i、j(i和j是方格的坐标)和一个表示方向的字母D(D=W、N、E或S),表示应拆除哪个方格哪个方向上的一堵墙。只要求输出一个解。

输入样例:
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

输出样例:
5
9
4 1 E

回复列表 (共1个回复)

沙发

不懂

我来回复

您尚未登录,请登录后再回复。点此登录或注册