这道题可以用贪心的方法把一个问题的整体慢慢的优化成为更加简单的问题 在n个数中
先把其从第一个数开始作为一个处理开端 求平均就不说了 如果第一个数是平均数,
就可以直接跳过第一个数(如程序中的 continue) 如果不是平均数,
把它的值减去平均数向左移动(如果为正本就应该向左,为负可看作后面的数向右移结合它,步数都相同)
#include<iostream>
using namespace std;
int main()
{ int n;
int num[102],
sum=0;
cin>>n;
for(int i=0;i<n;i++)
{ cin>>num[i];
sum+=num[i];
}
sum=sum/n;
int ans=0;
for( i=0;i<n-1;i++)
{ if(num[i]==sum) //当他是平均数直接跳过,我在这错了几次
{ continue; }
num[i+1]+=num[i]-sum;
if(num[i+1]==sum)
{ i++; }
ans++;
}
cout<<ans<<endl;
}