生徒ブルー ブリッジ カップ パイソン ブレークスルー | ストーン マージ

人形からパイソンを学ぼう!Blue Bridge Cup の Python の学習とテストの準備プロセスの質問を記録し、すべての瞬間を記録します。

まとめ投稿を添付します:生徒会 Blue Bridge Cup Python Breakthrough | Summary_COCOgsta's Blog - CSDN Blog


【説明】

N 個の石が一列に並んでいて、その数は 1,2,3,...,N です。

石の山にはそれぞれ特定の性質があり、整数で表すことができます. 次に、これらの N 個の石の山を 1 つの山にマージする必要があります。隣接する 2 つの石の山のみを一度に統合でき、統合のコストは 2 つの石の山の質量の合計です. 統合中の選択の順序が異なるため、統合の総コストも異なります.

問題は、総コストを最小化し、最小コストを出力する合理的な方法を見つけることです。

【説明を入力】

1 行目は数字で、N は石の積み上げ数を表します。1≦N≦300

2 行目の N の数は、各石の山 (1000 以下) の品質を示します。

【出力説明】

最小コストを表す整数を出力する

【入力例】

5

1 3 4 2 5

【出力例】

34

【コード解説】

n = int(input())
a = [0]

for i in input().split():
    a.append(int(i))

s = [0]
f = [[1061109567 for j in range(310)] for i in range(310)]

for i in range(1, n+1):
    s.append(s[i-1] + a[i])
    f[i][i] = 0

for len in range(2, n+1):
    for l in range(1, n+1):
        r = l + len -1
        if r <= n:
            for k in range(l, r):
                f[l][r] = min(f[l][r], f[l][k] + f[k+1][r] + s[r] - s[l - 1])

print(f[1][n])
复制代码

【運用実績】

5
1 3 4 2 5
34

おすすめ

転載: blog.csdn.net/guolianggsta/article/details/130146288