这是一道搜索题。求连通的的房间的个数,最大的房间有几个room,以及拆完那堵墙后连通的房间有最多的room。
这道题的输入比较怪,1表示西边有墙,2是北边,4是东边,8是南边。然后给一个数表示这个room四周墙的情况,实际就是这个数的二进制表示,若i位为1,则2i 代表的数就是那个方向有墙。我用二维矩阵存的这个图,然后dfs(),求连通的房间,并记录各个房间的room,最后再枚举墙,求最大的连通房间。
最后拆墙时,先拆最西边,其次最南边。他是面向东和南的,拆面前的墙时,他所在的room就是这个墙的位置。
程序代码: