【发布时间】:2020-04-13 18:46:39
【问题描述】:
问题: 考虑一位患有皮肤感染的患者,细菌正在迅速蔓延。假设皮肤表面被缩放为大小为 MxN 的矩形网格,并且单元格由 0 和 1 标记,其中 0 表示皮肤上的非受影响区域,1 表示皮肤上的受影响区域。细菌可以在 4 个可能的方向(右、左、上、下)从网格的一个单元格移动到另一个单元格,但一次只能沿一个方向移动到一个单元格,并在 1 秒内影响该单元格。目前正在治疗病人的医生看到了他的情况,想知道在细菌扩散到皮肤和病人死亡之前,他还有多少时间来拯救他。您能帮忙估计一下细菌完全占据皮肤表面所需的最短时间吗?
输入::皮肤的当前状态。 (大小为 MxN 的矩阵,包含 1 和 0,分别代表受影响和未受影响的区域)
输出::覆盖整个网格的最短时间(以秒为单位)。
示例:
输入:
[1 1 0 0 1]
[0 1 1 0 0]
[0 0 0 0 1]
[0 1 0 0 0]输出: 2 秒
说明:
输入 1 秒后,矩阵如下
[1 1 1 0 1]
[1 1 1 0 1]
[0 1 1 0 1]
[0 1 1 0 1]下一秒,矩阵完全被1填充
【问题讨论】:
-
你试过什么?您在解决方案的哪一部分卡住了?
-
M和N的最大值是多少?你有时间限制吗?
-
@Ash 我发现如何从问题入手有困难。
-
我最初的想法是生成所有下一个可能的状态并从那里达到目标。然后计算所有可能性的最小状态数。如果有其他方法请告诉我。我被困在这一点上。
-
@Damien M 和 N 可以是 2 到 1000
标签: algorithm recursion artificial-intelligence dynamic-programming backtracking