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

รหัส C ++ เพื่อค้นหาส่วนเบี่ยงเบนค่าเฉลี่ยเลขคณิตขั้นต่ำ


สมมติว่าเรามีอาร์เรย์ A ที่มี 3 องค์ประกอบ A[1] คือค่าเฉลี่ยเลขคณิตของสององค์ประกอบ A[0] และ A[3] ถ้า 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]คืนค่าขั้นต่ำ 1 และ (((a + c - 2 * b) mod 3 + 3) mod 3) 

ตัวอย่าง

ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น−

#include ใช้เนมสเปซ std;int แก้ปัญหา(vector A){ int a =A[0]; int b =A[1]; int c =A[2]; คืนค่า min(1, ((a + c - 2 * b) % 3 + 3) % 3);}int main(){ vector A ={ 2, 2, 6 }; ศาล <<แก้ (A) < 

อินพุต

{ 2, 2, 6 }

ผลลัพธ์

1