diff options
| author | 冯昶 <seaker@qq.com> | 2021-03-15 18:13:51 +0800 |
|---|---|---|
| committer | 冯昶 <seaker@qq.com> | 2021-03-15 18:13:51 +0800 |
| commit | 8b6be37fe4dac8b4c6489a95e55514b76b298d15 (patch) | |
| tree | ae36c8ec2c71f606c0e36adaa19dba366a68a0b4 /challenge-100/paulo-custodio/python/ch-2.py | |
| parent | 865acfd056fb6f409ec6b1a81d60b931cbcb69fe (diff) | |
| parent | c9aec2da6bcb04b488183f09ca94bee488557aff (diff) | |
| download | perlweeklychallenge-club-8b6be37fe4dac8b4c6489a95e55514b76b298d15.tar.gz perlweeklychallenge-club-8b6be37fe4dac8b4c6489a95e55514b76b298d15.tar.bz2 perlweeklychallenge-club-8b6be37fe4dac8b4c6489a95e55514b76b298d15.zip | |
Merge branch 'master' of github.com:seaker/perlweeklychallenge-club
Diffstat (limited to 'challenge-100/paulo-custodio/python/ch-2.py')
| -rw-r--r-- | challenge-100/paulo-custodio/python/ch-2.py | 76 |
1 files changed, 76 insertions, 0 deletions
diff --git a/challenge-100/paulo-custodio/python/ch-2.py b/challenge-100/paulo-custodio/python/ch-2.py new file mode 100644 index 0000000000..1f27d99c01 --- /dev/null +++ b/challenge-100/paulo-custodio/python/ch-2.py @@ -0,0 +1,76 @@ +#!/usr/bin/env python + +# Challenge 100 +# +# TASK #2 > Triangle Sum +# Submitted by: Mohammad S Anwar +# You are given triangle array. +# +# Write a script to find the minimum path sum from top to bottom. +# +# When you are on index i on the current row then you may move to either +# index i or index i + 1 on the next row. +# +# Example 1: +# Input: Triangle = [ [1], [2,4], [6,4,9], [5,1,7,2] ] +# Output: 8 +# +# Explanation: The given triangle +# +# 1 +# 2 4 +# 6 4 9 +# 5 1 7 2 +# +# The minimum path sum from top to bottom: 1 + 2 + 4 + 1 = 8 +# +# [1] +# [2] 4 +# 6 [4] 9 +# 5 [1] 7 2 +# Example 2: +# Input: Triangle = [ [3], [3,1], [5,2,3], [4,3,1,3] ] +# Output: 7 +# +# Explanation: The given triangle +# +# 3 +# 3 1 +# 5 2 3 +# 4 3 1 3 +# +# The minimum path sum from top to bottom: 3 + 1 + 2 + 1 = 7 +# +# [3] +# 3 [1] +# 5 [2] 3 +# 4 3 [1] 3 + +import sys; + +triangle = [] + +def add_row(row, items): + triangle.append(items) + +def parse(args): + for i in range(0, len(args)): + items = [int(x) for x in args[i].split(",")] + add_row(i, items) + +def min_sum(): + def min_sum_1(sum, row, col): + sum += triangle[row][col] + if row+1 == len(triangle): + return sum + else: + sum1 = min_sum_1(sum, row+1, col) + sum2 = min_sum_1(sum, row+1, col+1) + return min(sum1, sum2) + return min_sum_1(0, 0, 0) + +parse(sys.argv[1:]) +print(min_sum()) + + + |
