#4851. 最后一块石头的重量 II

最后一块石头的重量 II

题目描述

有一堆石头,用整数数组 stonesstones 表示。其中 stones[i]stones[i] 表示第 ii 块石头的重量。

每一回合,从中选出 任意两块石头 ,然后将它们一起粉碎。假设石头的重量分别为 xx 和 yy,且 x<=yx <= y。那么粉碎的可能结果如下:

  • 如果 x==yx == y,那么两块石头都会被完全粉碎;
  • 如果 x!=yx != y,那么重量为 xx 的石头将会完全粉碎,而重量为 yy 的石头新重量为 yxy-x

最后, 最多只会剩下一块 石头。返回此石头 最小的可能重量 。如果没有石头剩下,就返回 00

输入格式

第一行一个整数 nn 表示石头的数量;

接下一行 nn 个空格隔开的整数表示各个石头的重量。

输出格式

一行一个整数表示答案。

示例 1:

6
2 7 4 1 8 1
1

解释:

组合 2 和 4,得到 2,所以数组转化为 [2,7,1,8,1],

组合 7 和 8,得到 1,所以数组转化为 [2,1,1,1],

组合 2 和 1,得到 1,所以数组转化为 [1,1,1],

组合 1 和 1,得到 0,所以数组转化为 [1],这就是最优值。

示例 2:

5
31 26 33 21 40
5

提示:

  • 1<=n<=301 <= n <= 30
  • 1<=stones[i]<=1001 <= stones[i] <= 100

SOURCE

最后一块石头的重量 II