from Queue import Queue class Vertex: def __init__(self, num, i): self.num = num self.succeed = [] self.prev = [] self.code = i def __contains__(self, other): if self.code is other.code: return True else: return False def MaximumPathSum(filename): explored = set([]) # store explored edges path = [] # store path sumpath = [] # store sum of a vertex open = Queue() # store the unexplored vertex src = Graph(filename) open.put(src) path.append(src) sumpath.append(src.num) v = src while not open.empty(): v = path[maxVert(explored, sumpath, path)] # find the vertice with the max value print "bla" for s in v.succeed: if s not in open and s not in explored: open.put(s) path.append(s) sumpath.append(0) s.prev.append(v) if len(s.prev) != 0: for pred in s.prev: sum = s.num + sumpath[path.index(pred)] if sum > sumpath[path.index(s)]: sumpath[path.index(s)] = sum explored.add(v) open.get() return max(sumpath) def maxVert(explored, sumpath, path): index = 0; sum = -1 for i in range(0, len(sumpath)) : if path[i] not in explored and sumpath[i] > sum: sum = sumpath[i] index = i return index def Graph(filename): file = open(filename, "r") src = None i = 1 for line in file: v = Vertex(int(line.split()[0]), i) src = v i+=1 break prev = [src] for line in file: nums = line.split() vertexes = [] for num in nums: v = Vertex(int(num), i) vertexes.append(v) i += 1 for v in prev: for i in range(0, len(vertexes)-1): successor = [vertexes[i], vertexes[i+1]] v.succeed = successor prev = vertexes return src print MaximumPathSum("Problem18.txt")
Run
Reset
Share
Import
Link
Embed
Language▼
English
中文
Python Fiddle
Python Cloud IDE
Follow @python_fiddle
Browser Version Not Supported
Due to Python Fiddle's reliance on advanced JavaScript techniques, older browsers might have problems running it correctly. Please download the latest version of your favourite browser.
Chrome 10+
Firefox 4+
Safari 5+
IE 10+
Let me try anyway!
url:
Go
Python Snippet
Stackoverflow Question