1.记录总数
2.求平均值
3.每一个堆减去平均值,更新存储与平均值之间的差
4.从头向后推,只要是不等于平均值的都需要移动一次,依次向后推,直到所有差值都是0;
#include<iostream>
#include<cstring>
#include<cstdio>
#define MAX 10000
using namespace std;
int main()
{
int N;
int a[MAX],avg,sum=0,cnt=0;
cin>>N;
for(int i=0;i<N;i++)
{
cin>>a[i];
sum+=a[i];
}
avg=sum/N;
for(int i=0;i<N;i++)
a[i]-=avg;
for(int i=0;i<N;i++)
{
if(a[i]==0) continue;
a[i+1]+=a[i];
cnt++;
}
cout<<cnt<<endl;
return 0;
}
个人的小小博客,刚刚开始。有问题多批评指正,多多交流
洛谷博客