有一个建筑物平面示意图,可分解为 m × n 个边长面积均相等的小块,成为“格”
m<=100,n<=100 1 2 3 4 5 6 7 …… m
1
2
3
4
……
n
相邻格之间可能有墙, wall ( x , y )表示横坐标为 x 、纵坐标为 y 的格,其四个方向墙取值的加和:左面墙取值 1 ,上面墙取值 2 ,右面墙取值 4 ,下面墙取值 8 。
举例: wall ( 1 , 1 )取值为 3 ,则说明上面和左面有墙,其它方向没有。所有的墙将建筑物分割为若干个互相不连通的区域,每个区域称为一个“房间”。
对于格,及 wall ( x , y )的描述,采用数据文件 input.txt 描述
7
4
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
其中,第一行为 m ,第二行为 n ,第三行各个数据为 wall ( 1 , 1 )—— wall ( 1 , m )其他各行依此类推。
本关问题,请编写程序,具体要求如下:
读取一个给定的 input.txt 文件,求解,拆掉哪面墙,可以使得合并的两个房间,获得最大面积。输出夹着该墙的两个格的横纵坐标(只需找到满足要求的一堵墙,各坐标之间使用空格分割,如拆掉( 1 , 1 )和( 1 , 2 )两个格中间的墙,则输出为 1 1 1 2 )。
m<=100,n<=100 1 2 3 4 5 6 7 …… m
1
2
3
4
……
n
相邻格之间可能有墙, wall ( x , y )表示横坐标为 x 、纵坐标为 y 的格,其四个方向墙取值的加和:左面墙取值 1 ,上面墙取值 2 ,右面墙取值 4 ,下面墙取值 8 。
举例: wall ( 1 , 1 )取值为 3 ,则说明上面和左面有墙,其它方向没有。所有的墙将建筑物分割为若干个互相不连通的区域,每个区域称为一个“房间”。
对于格,及 wall ( x , y )的描述,采用数据文件 input.txt 描述
7
4
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
其中,第一行为 m ,第二行为 n ,第三行各个数据为 wall ( 1 , 1 )—— wall ( 1 , m )其他各行依此类推。
本关问题,请编写程序,具体要求如下:
读取一个给定的 input.txt 文件,求解,拆掉哪面墙,可以使得合并的两个房间,获得最大面积。输出夹着该墙的两个格的横纵坐标(只需找到满足要求的一堵墙,各坐标之间使用空格分割,如拆掉( 1 , 1 )和( 1 , 2 )两个格中间的墙,则输出为 1 1 1 2 )。
解决方案 »
- 怎样用程序禁用、启用网络连接
- 超难....的内存映像权限问题,请达人指点!!!,不够分再加
- 快来拿分呀,数据访问的小问题!
- 为什么DELPHI6的POP3控件无法接受免费邮箱的邮件呢?
- 能否提供一个TTS 实例 下载的地址? 或者发我信箱也可
- 请问被修改过内码的图像文件怎样能打开啊?
- 无
- 请问delphi调用html help 做的.chm文件,如何通过f1打开帮助?请给出代码?可以上下文关联
- ADOQuery的filter问题!
- 错误提示:无法插入空行,行必须有一个列值集。。。。但是纪录却明明已经插入进去了,这是怎么回事?
- 急,请高手赐教!ADO更新ORACLE数据库的一个问题。
- delphi中如何用Filter对多个字段进行过滤呀?
c=(wall ( x , y ) mod 8 ) div 4;
b=(wall ( x , y ) mod 8 ) mod 4 div 2;
a=1;求出系数a,b,c,d,若都不为0,则说明四面都有墙按题目的要求,应该判断a,b,c,d中0的个数最多的那个房间的墙可以得到最大面积,若b<>0,则应该拆除上面的墙,c<>0.....;d<>0.....按这个思想,程序逻辑应该比较清楚了
把第三行以后的数据导入一个二维数组中,由于没个数都可分解为WALL(X,Y)=1A+2B+2*2C+2*2*2D,则当A!=0时左面有墙,B!=0时上方向有墙,如此类推.
然后累计连通的空格数,找到连通空格数相加后最多&&相邻的两个"房间",输出它们相邻的两个空格.但是现在的问题是如何找到连通空格数相加后最多&&相邻的两个"房间"??请各位大虾继续指教!!!