【问题标题】:Find a fixed length path of adjacent 2D array elements查找相邻二维数组元素的固定长度路径
【发布时间】:2017-07-29 23:42:48
【问题描述】:

我有一个m x m 二维数组,我想随机选择一系列n 元素。元素必须相邻(不是对角线)。这里有什么好的方法?我虽然从随机起点开始进行深度优先搜索,但对于这样一个简单的问题来说,这似乎有点矫枉过正。

【问题讨论】:

    标签: arrays list search path tree


    【解决方案1】:

    如果我猜对了,您正在寻找像连续数字这样的序列?

    当我简化这个时:

    9 4 3

    0 7 2

    5 6 1

    So when the 1 is selected, you'd like to have path from 1 to 4 right ?我个人认为深度优先搜索将是最好的选择。这并不难,实际上很简单。想象一下,您选择了数字 2。您会记住数字 2 的位置,然后您可以查找最小的数字,直到有任何数字。当你完成这部分后,你只需对更大的数字做同样的事情。

    您有两个堆栈,一个用于可能的方式,另一个用于最终路径。 在遍历数组时,您只是从可能性中弹出并将正确的可能性推入最终堆栈。 最好的方法是在不保存任何东西的情况下找到可能的最低数字,然后只寻找更高的数字并将它们存储起来,这样最后你就会得到从最高数字到最低数字的堆栈。

    如果我弄错了,你的意思就像选择“感人”的元素,比如(从我的表中)9 0 7 6,这意味着内容无关紧要,那么你可以简单地选择一个number,存储所有可能性(它周围的每个元素),然后选择从 0 到存储值大小的随机数。当您选择一个时,您将其从这些存储的值中删除,但您保留它们。然后在新元素上运行它,只需将这些新元素添加到存储的元素中,这样随机数就会始终围绕这些选定的数字进行选择。

    【讨论】:

    • 数组条目的值无关紧要。它们也可以是对象,因此没有权重。我喜欢这两个堆栈的想法,非常感谢!
    猜你喜欢
    • 2014-12-20
    • 2012-09-10
    • 2015-12-26
    • 1970-01-01
    • 2019-04-22
    • 1970-01-01
    • 2011-01-03
    • 2013-09-13
    • 1970-01-01
    相关资源
    最近更新 更多