Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.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 - Fatal编程技术网

Algorithm 到达终点的最小距离

Algorithm 到达终点的最小距离,algorithm,Algorithm,请帮我回答以下问题: Bounce是一只跑得很快的兔子。这一次,她面临着在一条线上完成所有交易的艰巨任务。 最初,bounce位于第0个位置,要执行的交易位于右侧(位置>0) 她有两个长度相等的列表,一个包含值v[i],另一个位置p[i],用于它需要执行的每项交易 给定的列表“pos”是严格按递增顺序排列的,也就是说pos[i]贪婪算法在这里工作:当你向前走时,会得到一个负的累积结果,然后你知道你必须在一段时间后回到这个位置。这意味着每下一步计数三次(向前、向后和再次向前)。正如您所知,冲突的负

请帮我回答以下问题:

Bounce是一只跑得很快的兔子。这一次,她面临着在一条线上完成所有交易的艰巨任务。 最初,bounce位于第0个位置,要执行的交易位于右侧(位置>0)

她有两个长度相等的列表,一个包含值v[i],另一个位置p[i],用于它需要执行的每项交易


给定的列表“pos”是严格按递增顺序排列的,也就是说pos[i]贪婪算法在这里工作:当你向前走时,会得到一个负的累积结果,然后你知道你必须在一段时间后回到这个位置。这意味着每下一步计数三次(向前、向后和再次向前)。正如您所知,冲突的负贸易额最终需要累积,您不妨立即对其进行解释,知道您必须将以下步骤的距离增加三倍,直到获得正累积额

下面是如何在JavaScript中实现该算法。运行两个示例:

功能距离(v,p){
设距离=0;
设位置=0;
让资源=0;
for(设i=0;i日志(minDistance([2,-3,-1,2],[1,2,3,4]);//8在您的示例中,覆盖距离应为5:从位置1到位置3(2)+从位置3到位置2(1)+从位置2到位置4(2)=5。从起始位置到位置1的距离如何?你错过了,好吧。所以它应该是1(从0到1)+2+1+2=6(不是3+1+1+1)。对吗?0->1->2->3->2->3->4或0->1->2->3->2->4=>6距离范围您应该按顺序移动,但是,如果中间没有负值,您可以一次跳过所有步骤,并将所有资源值添加到总资源计数和总距离计数中的位置之间的距离中。请您解释与结果4相对应的顺序,您的代码似乎提供了
思维距离([2100,-100,-100],[1,2,3,4])
?不是有效的输入。如果你收集了所有的输入,你最终会得到一个正值,而你的情况是,所有的东西加起来都是负值。我不认为这是一个有效的输入。我认为我们应该假设总金额是非负的,因为指令是“…完成所有交易,然后在交易的最后(最右边)位置结束”@A如果您不认为此解决方案在所有情况下都是最优的,请提供一个证明或一个简单的反例。我尝试了自己的一些示例测试用例,但无法获得任何无效的输出。我之所以要求重新考虑,是因为我在思考负资源顺序是否具有某种意义,以后可以用于某些优化,如dp。但是,在尝试了我自己的2-3个示例案例之后,这可能是正确的方法。感谢@trincot提供的帮助,并对之前的响应延迟表示歉意。
1<=n<=10^5
-1000<=v[i]<=1000
1<=pos<=10^8
4
2
-3
1
2
1
2
3
4

6
Number of trades = 4v = {2,-3,1,2}
position = {1,2,3,4}

at x=1
we gain 2 resources and resource count is 2
at x=2
we can't trade as we have only 2 resources
at x=3
we gain 1 more resource and count becomes 3(now go back to 2 and finish pending task and come back)
distance covered = 3+1+1 = 5
at x=4
we gain 2 more resource and exit

Hence, total distance covered = 6
4
2
-3
-1
2
1
2
3
4

8