princeofsudan

ProjectEuler#18#67 Maximum path sum I and II

Mar 14th, 2013
68
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.35 KB | None | 0 0
  1. #By starting at the top of the triangle below and moving to adjacent numbers on the row below, the maximum total #from top to bottom is 23.
  2.  
  3. #3
  4. #7 4
  5. #2 4 6
  6. #8 5 9 3
  7.  
  8. #That is, 3 + 7 + 4 + 9 = 23.
  9.  
  10. #Find the maximum total from top to bottom of the triangle below:
  11.  
  12. #75
  13. #95 64
  14. #17 47 82
  15. #18 35 87 10
  16. #20 04 82 47 65
  17. #19 01 23 75 03 34
  18. #88 02 77 73 07 63 67
  19. #99 65 04 28 06 16 70 92
  20. #41 41 26 56 83 40 80 70 33
  21. #41 48 72 33 47 32 37 16 94 29
  22. #53 71 44 65 25 43 91 52 97 51 14
  23. #70 11 33 28 77 73 17 78 39 68 17 57
  24. #91 71 52 38 17 14 91 43 58 50 27 29 48
  25. #63 66 04 68 89 53 67 30 73 16 69 87 40 31
  26. #04 62 98 27 23 09 70 98 73 93 38 53 60 04 23
  27.  
  28. #NOTE: As there are only 16384 routes, it is possible to solve this problem by trying every route. However, Problem #67, is the same challenge with a triangle containing one-hundred rows; it cannot be solved by brute force, and #requires a clever method! ;o)
  29.  
  30. #Analysis
  31. #starting the search from the bottom to the top, adding the maximums along the way. This will “bubble” the maximum #total to the top of the pyramid
  32.  
  33. arr = [[int(i) for i in line.split()] for line in open('input.txt')]
  34.  
  35. for i in range(len(arr)-1,0,-1):
  36.     for j in range(len(arr[i])-1):
  37.         if arr[i][j] >= arr[i][j+1]:
  38.             arr[i-1][j] += arr[i][j]
  39.         else:
  40.             arr[i-1][j] += arr[i][j+1]
  41. print arr[0][0]
Advertisement
Add Comment
Please, Sign In to add comment