70146 - 2025挑战赛Py入门组完善程序2
统计题目(材料题)
石子合并 有N堆石子排成一排,每堆石子有一定的数量。现在要将这些石子合并成一堆,每次只能合并相邻的两堆石子,合并的代价是这两堆石子的数量之和。问将所有石子合并成一堆的最小总代价是多少?
试补全程序:
01 import sys
02
03 def min_merge_cost(stones):
04 n = len(stones)
05 prefix = [0] * (n + 1)
06 for i in range(1, n+1):
07 ①
08
09 dp = [[0] * n for _ in range(n)]
10
11 for length in range(2, n+1):
12 for i in range(n - length + 1):
13 ②
14 ③
15 for k in range(i, j):
16 cost = ④
17 if cost < dp[i][j]:
18 dp[i][j] = cost
19 return ⑤
20
21 n = int(input())
22 stones = list(map(int, input().split()))
23 print(min_merge_cost(stones))
||

关注我们