Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- def initMatrix(l, c, val):
- M = []
- for i in range(l):
- M.append([])
- for j in range(c):
- M[i].append(val)
- return(M)
- def BuildMaxMat(T):
- l = len(T)
- c = len(T[0])
- M = initMatrix(l, c, 0)
- for j in range(c):
- M[0][j] = T[0][j]
- for i in range(1, l):
- M[i][0] = T[i][0] + max(M[i - 1][0], M[i - 1][1])
- for j in range(1, c - 1):
- M[i][j] = T[i][j] + max(M[i - 1][j - 1], M[i - 1][j], M[i - 1][j + 1])
- M[i][c - 1] = T[i][c - 1] + max(M[i - 1][c - 2], M[i - 1][c - 1])
- return M
- def maxList(L):
- m = 0
- for i in range(1, len(L)):
- if L[i] > L[m]:
- m = i
- return m
- def harryPotter(T):
- """Computes maximum number of philosopher stones Harry can get.
- Uses dynamic programming strategy
- """
- M = BuildMaxMat(T)
- n = len(M)
- return M[n - 1][maxList(M[n - 1])]
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement