【发布时间】:2015-10-15 18:18:57
【问题描述】:
有一个问题在采访中问过我。问题陈述如下:- 有一个画家和一个 NxM 网格画布。 Painter 有任何正方形大小的画笔,即任何 nxn 大小。 Painter 知道他需要绘制哪些网格块,哪些必须留白(Painter 打算绘制黄色和白色的绘画)。因此,任何网格块都应为黄色或白色。除此之外,还有一些不关心的块,它们要么涂成黄色,要么留白。现在,我们必须提出一种算法,以尽量减少画家的工作量,并告诉最大可能的 nxn 画笔可用于绘制画布。 示例:-
如上例所示,最大尺寸为 2x2 的画笔可用于成功绘制画布。
我建议使用蛮力解决方案,即检查每种颜色并决定哪种颜色可以覆盖最大可能的方形画笔。面试官对此解决方案不满意。 我想问一下:- 1)解决这个问题的最佳方法是什么。 2) 这可以用动态规划的概念来解决吗?
【问题讨论】:
-
我想到的第一个优化 - 从画笔大小
min(gridweight, gridheight) / 2开始并尝试绘制所有内容,如果这个画笔可以绘制所有内容 - 增加画笔大小,否则减小,就像你在二进制搜索中所做的那样 -
每个黄色字段找到包含它的最大黄蓝色方块就足够了。这些正方形的最小尺寸是一个解决方案。
-
请整理
Painter intent to paint a Yellow …和don't care blocks which either be painted with black color or …。 -
@greybeard 画家将使用一种颜色(即这里的黄色)进行绘画......无论如何,谢谢指出。
标签: algorithm data-structures dynamic-programming