Advertisement
Guest User

Untitled

a guest
Nov 21st, 2017
56
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.15 KB | None | 0 0
  1. class Max(object):
  2. def __init__(self, l):
  3. "parse triangle, initialize cache"
  4. self.l = l
  5. self.t = [
  6. map(int,filter(lambda x:len(x)>0, x.split(" ")))
  7. for x in l
  8. ]
  9. self.cache = {}
  10.  
  11. def maxsub(self, r=0, c=0):
  12. "compute max path starting at (r,c)"
  13. saved = self.cache.get((r,c))
  14. if saved:
  15. return saved
  16.  
  17. if r >= len(self.t):
  18. answer = (0, [], [])
  19. else:
  20. v = self.t[r][c]
  21. s1, l1, c1 = self.maxsub(r+1, c)
  22. s2, l2, c2 = self.maxsub(r+1, c+1)
  23. if s1 > s2:
  24. answer = (v+s1, [v]+l1, [c]+c1)
  25. else:
  26. answer = (v+s2, [v]+l2, [c]+c2)
  27. self.cache[(r,c)] = answer
  28. return answer
  29.  
  30. def report(self, r=0, c=0):
  31. "find and report max path"
  32. m = self.maxsub(r, c)
  33. print
  34. print "\n".join(self.l)
  35. print "maxsum:%s\nvalues:%s\ncolumns:%s" % m
  36.  
  37. def main():
  38. with file('p067_triangle.txt') as f:
  39. L = f.readlines()
  40. Max(L).report()
  41.  
  42. if __name__ == '__main__':
  43. main()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement