#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;
}
您的變數 total 過了第一筆測資之後,並沒有初始化成 0 。
因而導致計算第二筆的磚塊數時,第一筆的磚塊數量也還殘留著,所以結果會是錯的。
建議把 total 的初始化放到您輸入 n 之後的地方,這樣就不用擔心殘留上一次資訊的問題了。
以上。希望有幫到您的忙。