Saber喜欢吃苹果。 现在Saber有n箱苹果。第一个箱子里有a1个苹果,第二箱有a2个,第三箱有a3个一 直到an。Saber是个 吃 货,但也是个爱美的女生。n箱苹果需要满足下面的条件才会看起 来更好看: 第一点就是每个箱子都不能空。 第二点就是苹果数量应该是递增的。也就是说,第一个箱子的苹果数少于第二个箱 子,第二箱的苹果少于 第三箱,第三箱少于第四箱,依此类推。 Saber今天有些饱,所以想通过吃尽量少的苹果同时满足以上两个要求而使箱子看上 去更美。请你输出Saber吃掉的最少的苹果数量。如果她无法完成心愿就输出-1吧。 【输入格式】 两行第一行一个整数n,表示有n箱苹果 第二行n个整数,表示每一箱里面苹果的数量
从倒数第二箱子开始 如果这个箱子中苹果大于其后箱子中苹果,就减少两者的差再减1。
你题目的解答代码如下:
#include<iostream>
using namespace std;
int main()
{
int n,i,t,sum=0;
cin >> n;
int a[n];
for (i = 0; i < n; i++)
cin >> a[i];
for (i = n-2; i >= 0; i--)
{
if (a[i]>=a[i+1])
{
t = a[i] - a[i+1] + 1;
a[i] -= t;
sum += t;
}
if (a[i]<=0)
{
sum = -1;
break;
}
}
cout << sum << endl;
return 0;
}
如有帮助,望采纳!谢谢!