其实这道题没有那么麻烦(非常简单),只需要计算相邻两堆的高度差就行了。q为左边一堆高度,p为右边一堆高度,s为总摆放次数。
1.q<p,即左边的一堆比右边矮,左边的一堆摆完后,右边的还差一点,那么摆放次数s加上两堆的高度差p-q(相当于摆好了右堆)。
2.q>=p,即左边的一堆比右边矮,说明只要左边的一堆堆好了,那么右边的一堆也肯定堆好了,所以不需要增加摆放次数s。
附上代码(p党):
readln(n);
for i:=1 to n do
begin
read(p);
if q<p then s:=s+p-q;
q:=p;
end;
writeln(s);