Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/10.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
Algorithm 根据索引列表查找最近的索引_Algorithm_Go - Fatal编程技术网

Algorithm 根据索引列表查找最近的索引

Algorithm 根据索引列表查找最近的索引,algorithm,go,Algorithm,Go,我是在解决一个编程问题时遇到这个问题的,因此我寻求原始问题子集的帮助 a、b和c的索引是在整数的切片([]int)中提供的 例如: indexes := [][]int{{0, 10}, {3, 9}, {5, 12}} 其中a位于指数0和10处。 b位于指数3和9处 c位于指数5和12处 目标是以编程方式查找a、b和c的哪个索引使它们最接近。例如,在上述情况下,答案是10、9、12 解决这个问题的办法是什么?我曾经考虑过动态规划,但仍然无法找出如何用递归的方式表示这个问题。 非Dp解决方案

我是在解决一个编程问题时遇到这个问题的,因此我寻求原始问题子集的帮助

a、b和c的索引是在整数的切片([]int)中提供的

例如:

indexes := [][]int{{0, 10}, {3, 9}, {5, 12}} 
其中a位于指数0和10处。 b位于指数3和9处 c位于指数5和12处

目标是以编程方式查找a、b和c的哪个索引使它们最接近。例如,在上述情况下,答案是10、9、12

解决这个问题的办法是什么?我曾经考虑过动态规划,但仍然无法找出如何用递归的方式表示这个问题。 非Dp解决方案也受欢迎,只是寻找想法而不是整个解决方案


我想我已经很接近了,但仍然不在那里(请参见min()函数)

仅作评论。您的
min
函数将剥离单个索引集,但不会根据需要对其进行比较。您需要找到最接近的
n
length元组(本例中为3),而不是分别处理a、b、c等。所以外部切片的长度决定了复杂性的这一部分,并且是递归应该基于的。。。除非我凌晨4点疲惫的大脑没有全力以赴…@雷芬斯皮尔说得对。这就是问题所在。我想我需要的是递归地找到min,比如。。min({0,10},{3,9},{5,12})--min({0},{3,9},{5,12})--min{3},{5,12}--min{5}--min 12}我不确定是否有一个解决方案不涉及比较所有可能的元组。我找到了一个迭代的解决方案,而不是递归的。基本上,我生成了(a,b,c)的所有组合,然后分别为它们打分。也许一个动态的解决方案可能包括跟踪最佳分数,并立即抛出已知的集合。e、 g.10,9,12是最好的5分,如果之前看到的话,如果看到0,9,5分,当看到0,9分至少达到9分时,可以立即排除0,9,5分。我会发布我的代码,但这是一个血淋淋的混乱。一个组合爆炸?请参阅和。它听起来像旅行推销员版本,没有特定的起点/终点。可以添加一个伪第二坐标以使用相同的算法。