C++ 编程题:奶牛捣乱的干草堆 - 最少移动干草捆数
C++ 编程题:奶牛捣乱的干草堆 - 最少移动干草捆数
农夫约翰精心整理的 N 堆干草,每堆干草的高度相同。但是,奶牛们趁着他不注意在干草堆之间移动了一些干草捆,使得各个干草堆的高度可能不再相同了。
给定所有干草堆的新高度,请帮助约翰确定,为了使所有干草堆恢复到原来的相同高度,至少要移动的最小干草捆数。
思路
先求出平均高度,然后统计每堆干草需要移动的捆数,取绝对值求和即为所求。
代码
#include <iostream>
#include <cmath>
using namespace std;
const int MAXN = 100005;
int a[MAXN];
int main() {
int n;
cin >> n;
int sum = 0;
for (int i = 0; i < n; i++) {
cin >> a[i];
sum += a[i];
}
int avg = sum / n;
int ans = 0;
for (int i = 0; i < n; i++) {
ans += abs(a[i] - avg);
}
cout << ans << endl;
return 0;
}
原文地址: https://www.cveoy.top/t/topic/np7H 著作权归作者所有。请勿转载和采集!