小友所在的部门正在进行一系列复杂的开发项目。为了优化开发流程,部门要求工程师在不同的任务之间切换。每个任务有不同的执行时间,有些任务因为各种原因无法进行(标记为-1)。工程师可以在规定的跳跃范围内从一个任务跳到另一个任务,但每次执行任务必须要消耗相应的时间。
你的目标是找到一个从任务列表开头到结束的执行顺序,使得总执行时间最小。如果存在多个总执行时间相同的顺序,返回按索引值更小优先的顺序。如果无法到达最后一个任务,返回一个空数组。
动态规划
定义 f[i] 表示到达任务 i 的最小总执行时间。同时维护一个 t
数组来记录最优路径。
状态转移:
f[i]
和 t[i]
。from collections import deque
本题属于以下题库,请选择所需题库进行购买