【发布时间】:2019-07-08 16:02:56
【问题描述】:
我正在使用递归和回溯来解决问题。每当满足某个条件时,我都会更新名为 minimum 的变量。然而,尽管minimum 变量在函数返回时被多次更新,minimum 仍然设置为其原始值。
我不明白为什么,因为我传递了对内存中同一位置的引用,并在遇到基本情况时更新它。
def minCost(self, costs: List[List[int]]) -> int:
depth, cost, prev_index, minimum = 0, 0, None, 10000
def min_cost_recur(depth, cost, prev_index, n, minimum, costs):
if depth == n:
minimum = min(minimum, cost)
return
original_prev_index = prev_index*1
for i in range(0, 3):
if not i == original_prev_index:
cost += costs[depth][i]
depth += 1
prev_index = i
min_cost_recur(depth, cost, prev_index, n, minimum, costs)
depth-=1
cost -= costs[depth][i]
prev_index = original_prev_index
min_cost_recur(depth, cost, -1, len(costs), minimum, costs)
return minimum
【问题讨论】:
标签: python recursion dynamic-programming backtracking