Я работаю над проблемой minCostpath, используя динамическое c программирование
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])
Я получаю правильный ответ, когда использую оба метода, но массив сетки изменяется при использовании метода глубокого копирования. Может кто-нибудь сказать мне, почему это так?