移動一個方塊,可以讓兩疊方塊的高度各靠近平均值一步
所以我們需要先計算平均值,再看看每疊方塊需要移動幾步。
這個題目我們需要掃過兩次陣列:
1. 將每疊方塊的數目存到陣列中,並且加總、計算平均
2. 加總 每疊方塊的數目與平均的差 (注意結果正負)
將[2.]的結果除以2即是解答。
#include<iostream>
using namespace std;
int main()
{
int h[60];
int n, sum, avg, ans, i;
cin >> n;
sum = 0;
for( i=0 ; i<n ; i=i+1 )
{
cin >> h[i];
sum = sum+h[i];
}
avg = sum/n;
ans = 0;
for( i=0 ; i<n ; i=i+1 )
{
if( avg > h[i] )
ans = ans + avg-h[i];
if( avg < h[i] )
ans = ans + h[i]-avg;
}
ans = ans/2;
cout << "The minimum number of moves is " << ans << "." << endl;
cout << endl;
return 0;
}