简短说明:
在网格中向我们提供2D grid
,整数K >= 0
和起点x, y
。我们会要求检查K
或greater
的路径长度是否存在,以便我们从起点开始和结束。
网格包含'.'
或'*'
。我们无法访问'*'
的单元格。此外,我们必须至少访问每个'.'
单元格一次。可能的移动是UP
,DOWN
,LEFT
,RIGHT
问题链接:
ALCATRAZ3
我的方法:
我们从起点开始,尽一切可能"移动,即UP
,DOWN
,LEFT
,RIGHT
。对于每个可能的移动,我们从州s_i
转移到州s_j
,我们减少K
的计数,同时将s_i
标记为已访问。如果我们使用K <= 0
再次到达起点,则答案为"YES"
,否则我们会回溯到之前的状态并执行下一步可能的操作。
为了优化它,我使用一个变量来查看我们是否已找到满足约束条件的路径。如果设置了变量,我们只需返回并且不要从当前状态探索新状态。
我处理了一些以下的案件: -
K > N * M
,则ans应为NO
'*'
,则ans应为NO
K = 0
且起点为'.'
,则应为YES
我用这种方法得到了错误答案。
请注意,这是该问题的指数解决方案,但它足以解决此特定问题。你可以找到我的代码
here。
谢谢。