Arrays 查找相邻二维阵列元素的固定长度路径
我有一个Arrays 查找相邻二维阵列元素的固定长度路径,arrays,list,search,path,tree,Arrays,List,Search,Path,Tree,我有一个mxm二维数组,我想随机选择一个n元素序列。元素必须相邻(而不是对角)。这里的好方法是什么?我想从一个随机的起点开始深度优先搜索,但对于这样一个简单的问题来说,这似乎有点过头了。如果我没弄错,你是在寻找像连续数字一样的序列吗 当我简单地说: 9 4 3 0 7 2 5 6 1 所以,当选择1时,您希望有从1到4的路径,对吗?我个人认为深度优先搜索是最好的选择。没那么难,其实很简单。假设你选择了2号。你们会记住数字2的位置,然后你们可以寻找最低的数字,直到有。当你完成了这个部分,你只需要对
mxm
二维数组,我想随机选择一个n
元素序列。元素必须相邻(而不是对角)。这里的好方法是什么?我想从一个随机的起点开始深度优先搜索,但对于这样一个简单的问题来说,这似乎有点过头了。如果我没弄错,你是在寻找像连续数字一样的序列吗
当我简单地说:
9 4 3
0 7 2
5 6 1
所以,当选择1时,您希望有从1到4的路径,对吗?我个人认为深度优先搜索是最好的选择。没那么难,其实很简单。假设你选择了2号。你们会记住数字2的位置,然后你们可以寻找最低的数字,直到有。当你完成了这个部分,你只需要对更高的数字做同样的事情
您有两个堆栈,一个用于可能的方式,另一个用于最终路径。
在遍历数组时,您只是从各种可能性中弹出,并将正确的可能性推到最后一个堆栈中。
最好的方法是在不保存任何内容的情况下找到尽可能低的数字,然后只查找更高的数字并存储它们,这样在最后您将得到从最高数字到最低数字的堆栈
如果我弄错了,你的意思是,就像从我的表格中选择“接触”的元素一样,这意味着内容无关紧要,那么你可以简单地选择一个数字,存储所有可能的元素(周围的每个元素),然后从0到存储值的大小随机选择一个数字。当您选择一个时,您可以将其从这些存储值中删除,但保留它们。然后在新元素上运行此操作,只需将这些新元素添加到存储的元素中,这样随机数将始终围绕这些选定的数字进行拾取。数组项的值并不重要。它们也可以是对象,因此没有权重。我喜欢两层的想法,非常感谢!