Advertisement
Guest User

HP

a guest
Jan 21st, 2017
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 0.92 KB | None | 0 0
  1. def initMatrix(l, c, val):
  2.     M = []
  3.     for i in range(l):
  4.         M.append([])
  5.         for j in range(c):
  6.             M[i].append(val)
  7.     return(M)
  8.  
  9.    
  10. def BuildMaxMat(T):
  11.     l = len(T)
  12.     c = len(T[0])
  13.     M = initMatrix(l, c, 0)
  14.     for j in range(c):
  15.         M[0][j] = T[0][j]
  16.     for i in range(1, l):
  17.         M[i][0] = T[i][0] + max(M[i - 1][0], M[i - 1][1])
  18.         for j in range(1, c - 1):
  19.             M[i][j] = T[i][j] + max(M[i - 1][j - 1], M[i - 1][j], M[i - 1][j + 1])
  20.         M[i][c - 1] = T[i][c - 1] + max(M[i - 1][c - 2], M[i - 1][c - 1])
  21.     return M
  22.  
  23.  
  24. def maxList(L):
  25.     m = 0
  26.     for i in range(1, len(L)):
  27.         if L[i] > L[m]:
  28.             m = i
  29.     return m
  30.  
  31.  
  32. def harryPotter(T):
  33.     """Computes maximum number of philosopher stones Harry can get.
  34.  
  35.    Uses dynamic programming strategy
  36.    """
  37.     M = BuildMaxMat(T)
  38.     n = len(M)
  39.     return M[n - 1][maxList(M[n - 1])]
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement