我正在使用动态编程来解决minCostpath问题
import copy
a = [
[1,3,1],
[1,5,1],
[4,2,1],
]
# dp = [[0 for x in range(len(a[0]))] for x in range(len(a))] #Method 1
dp = copy.copy(a) #Method 2
for i in range(len(a)):
print(a[i])
for i in range(len(a)):
print(dp[i])
for i in range(len(a)):
for j in range(len(a[0])):
# dp[i][j] += a[i][j] #Uncomment this if using method 1
if (i > 0 and j > 0):
dp[i][j] += min(dp[i-1][j],dp[i][j-1])
elif i > 0:
dp[i][j] += dp[i-1][j]
elif j > 0:
dp[i][j] += dp[i][j - 1]
# print(a[i])
# print(dp[i])
print('After finding minCost')
for i in range(len(a)):
print(a[i])
for i in range(len(a)):
print(dp[i])
当我同时使用这两种方法时,我得到了正确的答案,但是当使用深度复制方法时,网格数组被更改了。 谁能告诉我为什么吗?
答案 0 :(得分:0)
您已经导入了副本库,则可以使用deepcopy()方法。
dp = copy.deepcopy(a) #Method 2
对我有用!