题意是移动最少数量的方块,使每组方块一样高。输入0结束。
思路实际上就是求每一组方块离平均值的差的总和。
注意输出格式,要输出一个空行。
代码:
#include<iostream>
#include<iomanip>
#include<cmath>
#include<string.h>
using namespace std;
int main()
{
long double c=0,d,b,x=0,a[50],k[10000];
long long i,j,n=0;
while (cin>>b)
{if (b==0) {
for (i=0;i<n;i++)
{
cout<<"Set #"<<i+1<<endl;
cout<<"The minimum number of moves is "<<k[i]<<"."<<endl;
cout<<endl;
}n=0;
}
else {c=0,x=0;
for (i=0;i<b;i++)
{cin>>a[i];
c+=a[i];}
d=c/b;
for (j=0;j<b;j++)
{ x+=fabs(a[j]-d);
}
k[n]=x/2;
n++;}
}
return 0;
}