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;
}
C++ 编程题:奶牛捣乱的干草堆 - 最少移动干草捆数

原文地址: https://www.cveoy.top/t/topic/np7H 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录