【问题标题】:Designing a shortest path algorithm设计最短路径算法
【发布时间】:2016-06-02 03:44:48
【问题描述】:

我有一张这样的 5x5 地图:

**C** - is where I am(random)    
**.** - is a passable tile    
**X** - is not a passable tile   
**D** - is destination.

我的问题是当我无法水平或垂直传递瓷砖时如何执行算法。例如,我需要向上走两块瓷砖,但我不能垂直通过瓷砖,所以我有两个选择:向左走或向右走然后向上走。

但是,其中一个可能会失败,我将不得不退后几步尝试另一条路线。我不知道如何从逻辑上做到这一点。

谢谢。

【问题讨论】:

  • Stack Overflow 是一个由 470 万程序员组成的社区,就像你一样,互相帮助。
  • 如果你已经有一个算法可以找到任意路径,调整它并传递你来自的方向。然后在探测方向时跳过该方向。例如,如果您刚刚北上,就不能再北上。

标签: c# algorithm recursion logic shortest-path


【解决方案1】:

您需要了解回溯,请查看以下链接http://www.thegeekstuff.com/2014/12/backtracking-example/

另外,回溯是一种在前进时通过将路径推入堆栈来跟踪路径的方式,当您必须返回时,只需从堆栈中弹出即可。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-12-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多