#P0987. 自习室隔间面积
自习室隔间面积
题目背景
学校新建了一间矩形自习室,被划分为 行 列的小座位。相邻座位之间可能有隔板,隔板会阻止同学直接从一个座位走到另一个座位。
每个座位用一个 到 的整数描述四个方向是否有隔板。把这个数写成二进制后,四位依次表示北、东、南、西四个方向是否有隔板,其中 表示有, 表示没有。
题目描述
自习室边界一定有隔板,输入保证相邻座位之间的隔板信息一致。
请找出所有被隔板分隔出的连通区域,并输出每个区域的面积。面积指区域内包含的座位数量。结果需要按从大到小排序。
在移动时,只需要关心当前位置能否往下走,不用关心下一个位置是否会隔板挡住。
比如 可以往右走,但 左边有个隔板,那 还是可以走到 的。
输入格式
第一行包含两个整数 和 ,表示自习室的行数和列数,。
接下来 行,每行 个整数,范围为 到 ,表示对应座位四个方向的隔板情况。
输出格式
输出一行若干个整数,表示所有区域面积,按从大到小排列,用空格隔开。
样例
4 5
9 14 11 12 13
5 15 11 6 7
5 9 14 9 14
3 2 14 3 14
9 4 4 2 1
2 2
13 13
3 6
4
1 2
11 15
2
样例解释
将每个数写成四位二进制,四位从高到低分别表示北、东、南、西四个方向。例如,左上角座位的数值为 ,二进制为 1001,表示它的北侧和西侧有隔板,东侧和南侧没有隔板。
根据隔板情况,自习室被划分为 个连通区域:
- 面积为 的区域包含座位:、、、、、、、、。
- 两个面积为 的区域,分别位于自习室中上部和右下部。
- 面积为 的区域包含座位:、。
- 面积为 的区域只包含座位:,它的四周都有隔板。
所有区域的面积为 ,按从大到小排列后输出:
9 4 4 2 1