📅  最后修改于: 2023-12-03 14:55:56.066000             🧑  作者: Mango
这个问题可以使用动态规划算法来解决。具体而言,我们定义 $f_i$ 表示达到位置 $i$ 的最小成本。对于位置 $i$,我们可以从 $i - 1$ 或 $i - 2$ 跳转过来。因此,我们可以得到以下递推式:
$$ f_i = \min(f_{i-1}, f_{i-2}) + cost_i $$
其中 $cost_i$ 表示从位置 $i-1$ 移动到位置 $i$ 所需的成本。
最后的答案即为 $f_n$,其中 $n$ 表示阵列的长度。
以下是用 Python 实现的代码:
def min_cost(cost):
n = len(cost)
if n <= 1:
return 0
# 初始化 f 数组
f = [0] * n
f[0] = cost[0]
f[1] = cost[1]
# 递推计算 f 数组
for i in range(2, n):
f[i] = min(f[i-1], f[i-2]) + cost[i]
return f[n-1]
对于数组 $[10, 15, 20]$,该算法会返回 15,即从位置 1 移动到位置 2 所需的成本。