Algorithm 基于动态规划的游乐场游乐设施调度

Algorithm 基于动态规划的游乐场游乐设施调度,algorithm,dynamic-programming,analysis,Algorithm,Dynamic Programming,Analysis,您到达瓦尔多世界游乐园,离公园关闭还有T分钟。公园有n个游乐设施,您的目标是在公园关闭前完成尽可能多的游乐设施。(对于这个问题,乘坐同一辆车两次算作两次乘坐。)您将得到一个表W,以便W(i,t)给出在时间t时乘坐i的等待时间。为方便起见,假设t表示为公园关闭前的分钟数。骑乘i本身需要ri分钟,所有时间都以整数分钟计量 我尝试用类似于01背包问题的方法来解决它。但是,表W(其中包含行驶i的等待时间)随时间t而变化。这到底是一个背包加活动选择的组合问题吗?这有什么意义吗?让f(t)代表在t时最可实现

您到达瓦尔多世界游乐园,离公园关闭还有T分钟。公园有n个游乐设施,您的目标是在公园关闭前完成尽可能多的游乐设施。(对于这个问题,乘坐同一辆车两次算作两次乘坐。)您将得到一个表W,以便W(i,t)给出在时间t时乘坐i的等待时间。为方便起见,假设t表示为公园关闭前的分钟数。骑乘i本身需要ri分钟,所有时间都以整数分钟计量


我尝试用类似于01背包问题的方法来解决它。但是,表W(其中包含行驶i的等待时间)随时间t而变化。这到底是一个背包加活动选择的组合问题吗?

这有什么意义吗?让
f(t)
代表在
t
时最可实现的骑乘。然后:

// Higher t is back in time
// since t is how many minutes
// before the park closes

f(t) = max(
  // Not taking any ride
  f(t - 1),

  // Take ride i
  1 + f(t - W(i, t) - r_i)
)
for all i

我写的递归函数如下:给定n个骑乘,如果选择了骑乘I,我调用下一个递归,传递参数为骑乘I+1和骑乘I花费的总时间。如果未选择行驶i,则传递的参数为行驶i+1和所有t和i的时间TIf,W(i,t+1)-W(i,t)>=-1,这非常简单。换句话说,如果您等待x分钟,等待时间不能超过x分钟。如果您有终止条件,是:-)