Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/11.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_Dynamic Programming_Greedy - Fatal编程技术网

Algorithm 跟进:找到停车次数固定的最佳停车顺序

Algorithm 跟进:找到停车次数固定的最佳停车顺序,algorithm,dynamic-programming,greedy,Algorithm,Dynamic Programming,Greedy,我正在尝试编写以下问题的代码: 在a0,a1,…,有n家酒店,其中0(7-4),但我认为ans应该在位置[0,5,10]处停止,并且algo不会为情况3选择位置5,当合并两个站点时,哪个站点将保持?换言之,新站点的位置是什么?@PetarPetrovic如果你有n-2,n-1,n,n+1站点,并且你需要合并n-1和n,比较以下两个距离:n-2到n,n-1到n+1,如果第一个是两个站点中的最小一个,则在n处合并,否则在n-1处合并应该有效,对吗?假设输入在位置[0,4,5,7,10]有5个站点,输

我正在尝试编写以下问题的代码:

在a0,a1,…,有n家酒店,其中0 我提出了这个dp解决方案:

dp(i)
作为最低成本,这样最后一站就是酒店i。 基本情况:
dp(0)=0


为了计算DP(i),我考虑所有可能的地方<代码> 0 > P>我在前面的问题上也写了这个答案,但是我想你忽略了它。无论如何,让我知道这个方法是否有用

您的算法将为您提供站点位置(int[]k),这将使您的成本最小化,而无需考虑d。我从你的问题中得出,你想把这些k点转换成d点

有3种情况:

(一)

k、 长度==d

问题解决

(二)

k、 长度 而(k.length!=d)求所有n的a(n-1)和a(n)之间的最小距离(min)。从第一家酒店开始穿越。找到a(n)-a(n-1)为最小值的第一个事件。现在,如果这两个酒店位于您的k,请找到下一个事件,否则请中断您的站点,将其作为单独的站点包含在k中,然后重复

若你们到达酒店的尽头,你们可以用第二个最小距离,依此类推,直到汇合

(三)

k、 长度>d

而(k.length!=d)这一次,您需要在k中找到两个邻居之间的最小距离。将两个相邻点合并为一站,直到收敛


我不确定这种方法是最佳的还是正确的,但这是我的两分钱。

我也写了你上一个问题的答案,但我认为你忽略了它。无论如何,让我知道这个方法是否有用

您的算法将为您提供站点位置(int[]k),这将使您的成本最小化,而无需考虑d。我从你的问题中得出,你想把这些k点转换成d点

有3种情况:

(一)

k、 长度==d

问题解决

(二)

k、 长度 而(k.length!=d)求所有n的a(n-1)和a(n)之间的最小距离(min)。从第一家酒店开始穿越。找到a(n)-a(n-1)为最小值的第一个事件。现在,如果这两个酒店位于您的k,请找到下一个事件,否则请中断您的站点,将其作为单独的站点包含在k中,然后重复

若你们到达酒店的尽头,你们可以用第二个最小距离,依此类推,直到汇合

(三)

k、 长度>d

而(k.length!=d)这一次,您需要在k中找到两个邻居之间的最小距离。将两个相邻点合并为一站,直到收敛


我不确定这种方法是最佳的还是正确的,但这是我的两分钱。

你能再增加一个维度来记录停止次数吗?那么,重复关系会是什么样子?我正试图找到一个有效的解决方案,可能是O(nd)阶。你能再增加一个维度来记录停止的次数吗?那么递归关系会是什么样子?我试图找到一个有效的解决方案,可能是O(nd)级的。对于案例3,当你合并两个站点时,哪个站点会保留?换言之,新站点的位置是什么?@PetarPetrovic如果你有n-2,n-1,n,n+1站点,并且你需要合并n-1和n,比较以下两个距离:n-2到n,n-1到n+1,如果第一个是两个站点中的最小一个,则在n处合并,否则在n-1处合并应该有效,对吗?假设输入在位置[0,4,5,7,10]有5个站点,输出想要3个站点algo将首先合并位置[4,5]的站点,并选择位置4,因为(5-0)>(7-4),但我认为ans应该在位置[0,5,10]处停止,并且algo不会为情况3选择位置5,当合并两个站点时,哪个站点将保持?换言之,新站点的位置是什么?@PetarPetrovic如果你有n-2,n-1,n,n+1站点,并且你需要合并n-1和n,比较以下两个距离:n-2到n,n-1到n+1,如果第一个是两个站点中的最小一个,则在n处合并,否则在n-1处合并应该有效,对吗?假设输入在位置[0,4,5,7,10]有5个站点,输出想要3个站点algo将首先合并位置[4,5]的站点并选择位置4,因为(5-0)>(7-4),但我认为ans应该在位置[0,5,10]停止,algo不会选择位置5
for i=1;i<=n;i++
  dp(i)=inf
  prev(i)=undefined
  for k=0;k<i;k++
    if (dp(i)>dp(k)+(ai-ak)^2)
      dp(i) = dp(k)+(ai-ak)^2)
      prev(i) = k