Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays 查找相邻二维阵列元素的固定长度路径_Arrays_List_Search_Path_Tree - Fatal编程技术网

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到存储值的大小随机选择一个数字。当您选择一个时,您可以将其从这些存储值中删除,但保留它们。然后在新元素上运行此操作,只需将这些新元素添加到存储的元素中,这样随机数将始终围绕这些选定的数字进行拾取。

数组项的值并不重要。它们也可以是对象,因此没有权重。我喜欢两层的想法,非常感谢!