/*20131019 hanting*/
//這題要把每一個積木堆都變成一樣高度
//我的想法是先算出每一堆積木的數量的平均,然後再考慮哪幾堆少於平均的
//如果有一堆少於平均,那就是高於平均的一堆要把一個積木拿來給少於平均的那一堆,此時移動積木數+1
#include <iostream>
using namespace std;
int main()
{
int k,t=0;
while(cin>>k)//輸入次數(共有幾堆)
{
int total=0,p,acount=0,again=1;
t++;
if(k==0)//題目說輸入0就表示結束
{
return 0;
}
int a[k];//a[k]表示第幾堆
for(int i=0;i<k;i++)
{
cin>>a[i];//輸入a[i]的積木的數量,其中i=0~k-1,就是有k組積木堆
total+=a[i];//算出總共多少積木
}
p=total/k;//每一堆積木的平均值
while(again==1)//如果again=1,再跑一次
{
again=0;
for(int i=0;i<k;i++)//如果該堆積木少於平均數,那就將該堆積木堆+1,移動次數+1
{
if(a[i]<p)
{
a[i]++;
acount++;
}
}
for(int i=0;i<k;i++)//掃描美意堆積木是否還有少於平均數堆,若有again=1
{
if(a[i]<p)
again=1;
}
}
cout<<"Set #"<<t<<endl;
cout<<"The minimum number of moves is "<<acount<<"."<<endl<<endl;//這裡要兩個endl喔
}
return 0;
}
2013年10月19日 星期六
[UVA] 591 - Box of Bricks
訂閱:
張貼留言 (Atom)
沒有留言:
張貼留言