Bladeren bron

Maximum path sum I

Adel Qalieh 13 jaren geleden
bovenliggende
commit
a8a0ba2b0c
2 gewijzigde bestanden met toevoegingen van 53 en 0 verwijderingen
  1. 38 0
      18.py
  2. 15 0
      18_triangle.txt

+ 38 - 0
18.py

@@ -0,0 +1,38 @@
+def loadTriangle():
+	"""
+	Returns a list of lists for the triangle stored in file
+	"""
+	f = open("18_triangle.txt", 'r')
+	triangle = f.read().split("\n")
+	for row in range(len(triangle)):
+		triangle[row] = map(int, triangle[row].split())
+	return triangle
+
+def addBottom(triangle):
+	"""
+	Adds maximum values from the bottom row to the row above, reducing the
+	number of rows in the triangle
+	"""
+	newTriangle = triangle[:-1]
+	
+	# maxBottom is a list that contains the maximum values corresponding to the
+	# second to last row
+	maxBottom = []
+	for s in range(0,len(triangle[-1])-1):
+		b = s + 1
+		maxBottom.append(max([triangle[-1][s],triangle[-1][b]]))
+	
+	# Adds value of maxBottom to second to last row in the new triangle
+	for value in range(len(newTriangle[-1])):
+		newTriangle[-1][value] += maxBottom[value]
+
+	return newTriangle
+
+def main():
+	""" Main loop, iterates through triangle until only top value is left """
+	triangle = loadTriangle()
+	while len(triangle) > 1:
+		triangle = addBottom(triangle)
+	return triangle[0][0]
+
+print main()

+ 15 - 0
18_triangle.txt

@@ -0,0 +1,15 @@
+75
+95 64
+17 47 82
+18 35 87 10
+20 04 82 47 65
+19 01 23 75 03 34
+88 02 77 73 07 63 67
+99 65 04 28 06 16 70 92
+41 41 26 56 83 40 80 70 33
+41 48 72 33 47 32 37 16 94 29
+53 71 44 65 25 43 91 52 97 51 14
+70 11 33 28 77 73 17 78 39 68 17 57
+91 71 52 38 17 14 91 43 58 50 27 29 48
+63 66 04 68 89 53 67 30 73 16 69 87 40 31
+04 62 98 27 23 09 70 98 73 93 38 53 60 04 23