题意: 给出你N个数,问你这个数想要比后面的数都大至少要加几?
思路: 有一点点考思路,从后向前找,依次找出最大值,直接比较就可以了,有一点点细节,就是要记录最大数和当前数的下标是否是同一位置,如果是则为0否则,直接算便可、
AC代码:
#include<cstdio>
#include<cstring>
const int maxn=100100;
int a[maxn];
int b[maxn];
int n;
int main()
{
while(scanf("%d",&n)!=EOF){
for(int i=0;i<n;i++)
scanf("%d",&a[i]);
int x=0; int y;
for(int i=n-1;i>=0;i--){
if(x<a[i]){
x=a[i];
y=i;
}
if(y==i)
b[i]=x-1;
else b[i]=x;
}
for(int i=0;i<n-1;i++){
if(b[i]>=a[i])
printf("%d ",b[i]-a[i]+1);
else
printf("0 ");
}
printf("0\n");
}
return 0;
}