<p>有 <code>N</code> 堆石头排成一排,第 <code>i</code> 堆中有 <code>stones[i]</code> 块石头。</p> <p>每次<em>移动(move)</em>需要将<strong>连续的</strong> <code>K</code> 堆石头合并为一堆,而这个移动的成本为这 <code>K</code> 堆石头的总数。</p> <p>找出把所有石头合并成一堆的最低成本。如果不可能,返回 <code>-1</code> 。</p> <p> </p> <p><strong>示例 1:</strong></p> <pre><strong>输入:</strong>stones = [3,2,4,1], K = 2 <strong>输出:</strong>20 <strong>解释:</strong> 从 [3, 2, 4, 1] 开始。 合并 [3, 2],成本为 5,剩下 [5, 4, 1]。 合并 [4, 1],成本为 5,剩下 [5, 5]。 合并 [5, 5],成本为 10,剩下 [10]。 总成本 20,这是可能的最小值。 </pre> <p><strong>示例 2:</strong></p> <pre><strong>输入:</strong>stones = [3,2,4,1], K = 3 <strong>输出:</strong>-1 <strong>解释:</strong>任何合并操作后,都会剩下 2 堆,我们无法再进行合并。所以这项任务是不可能完成的。. </pre> <p><strong>示例 3:</strong></p> <pre><strong>输入:</strong>stones = [3,5,1,2,6], K = 3 <strong>输出:</strong>25 <strong>解释:</strong> 从 [3, 5, 1, 2, 6] 开始。 合并 [5, 1, 2],成本为 8,剩下 [3, 8, 6]。 合并 [3, 8, 6],成本为 17,剩下 [17]。 总成本 25,这是可能的最小值。 </pre> <p> </p> <p><strong>提示:</strong></p> <ul> <li><code>1 <= stones.length <= 30</code></li> <li><code>2 <= K <= 30</code></li> <li><code>1 <= stones[i] <= 100</code></li> </ul>