Computer >> Máy Tính >  >> Lập trình >> C ++

Mã C ++ để tìm độ lệch trung bình số học tối thiểu

Giả sử chúng ta có một mảng A với 3 phần tử. A [1] là trung bình cộng của hai phần tử A [0] vàA [3] nếu A [0] + A [2] =2 * A [1]. Độ lệch trung bình cộng của ba số d (A [0], A [1], A [2]) là | A [0] + A [2] - 2 * A [1] |. Chúng ta có thể thực hiện các phép toán sau bất kỳ lúc nào:Chọn hai chỉ mục i và j từ các chỉ số {0, 1, 2} sao cho i! =J, sau đó tăng A [i] lên 1 và giảm A [j] đi 1. Chúng ta phải tìm giá trị nhỏ nhất của độ lệch trung bình cộng.

Vì vậy, nếu đầu vào là A =[2, 2, 6], thì đầu ra sẽ là 1, bởi vì nếu chúng ta giảm A [0] và tăng A [1], thì mảng sẽ là [1, 3, 6], vì vậy độ lệch trung bình sẽ là | 1 + 6 - 2 * 3 | =1.

Các bước

Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau -

 a:=A [0] b:=A [1] c:=A [2] trả về giá trị nhỏ nhất là 1 và (((a + c - 2 * b) mod 3 + 3) mod 3)  

Ví dụ

Hãy cùng chúng tôi xem cách triển khai sau để hiểu rõ hơn−

 #include  using namespace std; int Giải (vector  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  A ={2, 2, 6}; cout < 

Đầu vào

 {2, 2, 6} 

Đầu ra

 1