题目:有一堵墙由n堆砖堆成,但这n堆砖不一样高,求最少移动多少砖可以使这n堆砖一样高。
解题思路:先将这些砖加起来除以n即平均数,然后令数组中的每个值都减去这个平均数,把大于0的加起来即移动的最少数目。
细节处理:在输入a[i]的时候直接把a[I]累加起来。
代码:#include<iostream>
using namespace std;
int main()
{
int a[51],k[51]={0},i,n,j=0;
while(cin>>n)
{
if(n==0)
break;
int ave=0,sum=0;
for(i=1;i<=n;i++)
{cin>>a[i];
ave+=a[i];
}
ave/=n;
for(i=1;i<=n;i++)
a[i]-=ave;
for(i=1;i<=n;i++)
if(a[i]>0)
sum+=a[i];
cout<<"Set #"<<++j<<endl;
cout<<"The minimum number of moves is "<<sum<<"."<<endl<<endl;}
return 0;}
感想:思路一定要正确。