Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

โค้ด C++ หาค่าความคลาดเคลื่อนค่าเฉลี่ยเลขคณิตต่ำสุด

สมมติว่าเรามีอาร์เรย์ A ที่มี 3 องค์ประกอบ A[1] เป็นค่าเฉลี่ยเลขคณิตของ A[0] และ A[2] ถ้า A[0] + A[2] = 2 * A[1] ความคลาดเคลื่อนค่าเฉลี่ยเลขคณิตของตัวเลขสามตัว d(A[0], A[1], A[2]) คือ |A[0] + A[2] - 2*A[1]| เราสามารถดำเนินการต่อไปนี้ได้ไม่จำกัดจำนวนครั้ง: เลือกดัชนี i และ j จาก {0, 1, 2} ที่ i != j เพิ่ม A[i] ขึ้น 1 และลด A[j] ลง 1 เราต้องหาค่าต่ำสุดของความคลาดเคลื่อนค่าเฉลี่ยเลขคณิต

เช่น ถ้าค่าที่ป้อนเข้าเป็น A = [2, 2, 6] ผลลัพธ์จะได้ 1 เพราะถ้าลด A[0] และเพิ่ม A[1] อาร์เรย์จะกลายเป็น [1, 3, 6] ความคลาดเคลื่อนจะเป็น |1 + 6 - 2 * 3| = 1

ขั้นตอนการแก้ปัญหา

เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนดังนี้:

a := A[0] b := A[1] c := A[2] คืนค่า min(1, (((a + c - 2 * b) mod 3 + 3) mod 3))

ตัวอย่างโค้ด

ดูการนำไปใช้จริงด้านล่างเพื่อความเข้าใจที่ดียิ่งขึ้น:

#include <bits/stdc++.h> using namespace std; int solve(vector<int> A) {    int a = A[0];    int b = A[1];    int c = A[2];    return min(1, ((a + c - 2 * b) % 3 + 3) % 3); } int main() {    vector<int> A = { 2, 2, 6 };    cout << solve(A) << endl; }

ข้อมูลนำเข้า

{ 2, 2, 6 }

ข้อมูลส่งออก

1