给定一个RxC网格,其中某些单元格被占用,覆盖被占用单元格所需的最小矩形数是多少?
示例:(x - 占用)
x - - - -
- - x - -
- x - x x
x - x - -
所需的最小矩形为3.(覆盖第1列,第2列,第3行)
有人能指出我正确的方向吗?这似乎很容易,但我无法找到一个强大的解决方案!
感谢。
答案 0 :(得分:2)
考虑一个包含两个部分的图形,第一部分中的顶点与第二部分中的行和顶点相对应。部件i
中的顶点1
连接到部件j
iff 2
的顶点a[i][j] == 'x'
。然后问题就减少到找到minimum vertex cover,例如最小的顶点集,图表的每个边缘至少有一个此集合的端点。由于图是二分图,因此可以在多项式时间内完成,请参阅this post。