我在编程比赛中遇到了这个问题,我认为它可以由 DP 解决,但想不出任何问题,所以请帮忙。这是任务:
有 n 摞硬币线性放置,每摞从 1 到 n 标记。你还有一袋硬币,里面装着无限的硬币。堆栈和麻袋中的所有硬币都是相同的。您所要做的就是使硬币的高度不降低。
您选择两个堆栈 i 和 j 并在从堆栈'i'到堆栈'j'(包括)的每一堆硬币上放置一枚硬币。这个完整的操作被认为是一个动作。您必须尽量减少移动次数以使高度不降低。
No. of Test Cases < 50
1 <= n <= 10^5
0 <= hi <= 10^9
输入规范: 会有一些测试用例。读到EOF。每个测试用例的第一行将包含一个整数 n,第二行包含 n 个高度 (h[i]) 的堆栈。
输出规范: 输出单个整数,表示每个测试用例的移动次数。
for eg: H={3,2,1}
answer is 2
step1: i=2, j=3, H = {3,3,2}
step2: i=3, j=3, H = {3,3,3}