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

การดำเนินการขั้นต่ำของประเภทที่กำหนดเพื่อทำให้องค์ประกอบทั้งหมดของเมทริกซ์เท่ากันใน C++


คำชี้แจงปัญหา

เมื่อกำหนดจำนวนเต็ม K และเมทริกซ์ของ M x N ภารกิจคือการค้นหาจำนวนการดำเนินการขั้นต่ำที่จำเป็นในการทำให้องค์ประกอบทั้งหมดของเมทริกซ์เท่ากัน ในการดำเนินการครั้งเดียว คุณสามารถเพิ่มหรือลบ K ออกจากองค์ประกอบใดๆ ของเมทริกซ์ได้

ตัวอย่าง

หากเมทริกซ์อินพุตคือ:{ {2, 4}, {20, 40}} และ K =2 การดำเนินการทั้งหมด 27 รายการที่ต้องการดังนี้ เมทริกซ์[0][0] =2 + (K * 9) =20 =9 operationMatrix[0][1] =4 + (k * 8) =20 =8 operationMatrix[1][0] =20 + (k * 10) =40 =10 การดำเนินการ

อัลกอริทึม

<ก่อน>1. เนื่องจากเราได้รับอนุญาตให้เพิ่มหรือลบ K จากองค์ประกอบใดๆ เท่านั้น เราจึงสามารถอนุมานได้ว่า mod ขององค์ประกอบทั้งหมดที่มี K ควรเท่ากัน ถ้าไม่ใช่ ให้คืนค่า -12 จัดเรียงองค์ประกอบทั้งหมดของเมทริกซ์ตามลำดับที่ไม่ลดลงและหาค่ามัธยฐานขององค์ประกอบที่จัดเรียง3 จำนวนขั้นตอนขั้นต่ำจะเกิดขึ้นหากเราแปลงองค์ประกอบทั้งหมดให้เท่ากับค่ามัธยฐาน

ตัวอย่าง

#include ใช้เนมสเปซ std;int getMinOperations(int n, int m, int k, vector>&matrix) { vector arr(n * m, 0 ); int mod =เมทริกซ์[0][0] % k; สำหรับ (int i =0; i > matrix ={ { 2, 4}, { 20, 40}, }; int n =matrix.size(); int m =เมทริกซ์[0].size(); int k =2; cout <<"การดำเนินการที่จำเป็นขั้นต่ำ =" < 

เมื่อคุณคอมไพล์และรันโปรแกรมข้างต้น มันสร้างผลลัพธ์ดังต่อไปนี้

ผลลัพธ์

การดำเนินการที่จำเป็นขั้นต่ำ =27