diff --git a/TangDou/LanQiaoBei/ZhongGaoJi/LanQiao15STEMA202401/5.cpp b/TangDou/LanQiaoBei/ZhongGaoJi/LanQiao15STEMA202401/5.cpp index d0c342f..9942cac 100644 --- a/TangDou/LanQiaoBei/ZhongGaoJi/LanQiao15STEMA202401/5.cpp +++ b/TangDou/LanQiaoBei/ZhongGaoJi/LanQiao15STEMA202401/5.cpp @@ -27,26 +27,32 @@ int main() { 如果一下子没用了,就继续向后做同样的操作 举栗子思考: + 3 10 1 1 + + 3 5 1 6 + + + 3 1 5 6 */ for (int i = 1; i <= n; i++) { int d = a[i] - avg; // 差值,注意:这个差值可能是正的,也可能是负的 - total += d; + total += abs(d); int j = i + 1; while (d != 0 && j <= n) { - // 向后找出,比avg小的 + // 向后找比avg小的 if (d > 0 && a[j] < avg) { - int x = min(d, avg - a[j]); + int x = min(abs(d), avg - a[j]); a[i] -= x; a[j] += x; d -= x; } - // 向后找出,比avg大的 + // 向后找比avg大的 if (d < 0 && a[j] > avg) { - int x = min(d, a[j] - avg); + int x = min(abs(d), a[j] - avg); a[i] += x; a[j] -= x; d += x;