#16888: 不知道錯哪裡~~


a18600083@gmail.com (leoyu)

學校 : 國立中興大學附屬高級中學
編號 : 75344
來源 : [61.223.24.140]
最後登入時間 :
2019-02-02 00:28:22
c067. 00591 - Box of Bricks -- UVa591 | From: [122.118.23.197] | 發表日期 : 2019-02-16 00:00

#include<iostream>
using namespace std;

int main(){
int n,total=0;
int h[50];
int num=1;
while(cin>>n){
if(n==0)
break;
else{
for(int i=0;i<n;i++){
cin>>h[i];
total+=h[i];
}
int avg=total/n,tomove=0;
for(int i=0;i<n;i++){
if(h[i]>avg){
tomove+=(h[i]-avg);
}
}
cout<<"Set #"<<num<<endl;
cout<<"The minimum number of moves is "<<tomove<<"."<<endl;
num++;
}
}

return 0;
}

 
#16889: Re:不知道錯哪裡~~


inversion (「我們所認識的可符香是個像天使的好女孩」之葉林 *Cries...)

學校 : 國立清華大學
編號 : 43537
來源 : [49.159.6.107]
最後登入時間 :
2022-05-28 19:29:12
c067. 00591 - Box of Bricks -- UVa591 | From: [49.158.83.43] | 發表日期 : 2019-02-16 11:30

您的變數 total 過了第一筆測資之後,並沒有初始化成 0 。

因而導致計算第二筆的磚塊數時,第一筆的磚塊數量也還殘留著,所以結果會是錯的。

建議把 total 的初始化放到您輸入 n 之後的地方,這樣就不用擔心殘留上一次資訊的問題了。

 

以上。希望有幫到您的忙。

 
ZeroJudge Forum