代码思路我想的是每一堆纸牌从前往后只会给予和索要,所以只要按照平均数从前往后总和少了就索要,多了就给予,看题解思路也差不多是这样,但为什么我这样做过不了啊,求大佬指教
#include<iostream>
#include<cstdio>
using namespace std;
int tip[105];
int main(){
int n;
scanf("%d",&n);
int ant = 0;
for(int i=1;i<=n;i++){
scanf("%d",&tip[i]);
ant+=tip[i];
}
int avg = ant/n;
int amt = 0,sum = 0;
for(int i=1;i<=n;i++){
if(tip[i]<avg){
if(sum-avg+tip[i]>0){
amt+=1;
sum=sum-avg+tip[i];
}
else if(sum>0&&sum<avg-tip[i]){
sum=sum-avg+tip[i];
amt+=1;
}
else if(sum>0&&sum==avg-tip[i])sum=0;
else if(sum<=0){
sum=sum-avg+tip[i];
amt+=1;
}
}
else if(tip[i]>=avg){
if(sum>=0){
if(tip[i]+sum-avg>0)amt+=1;
sum=sum+tip[i]-avg;
}
else if(sum<0){
if(sum+tip[i]-avg>0){
amt+=1;
sum=sum+tip[i]-avg;
}
if(sum+tip[i]-avg<0){
amt+=1;
sum=sum+tip[i]-avg;
}
}
}
}
printf("%d\n",amt);
return 0;
}