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

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


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

รับอาร์เรย์ที่มีจำนวนเต็มบวก n เราจำเป็นต้องค้นหาจำนวนการดำเนินการขั้นต่ำเพื่อให้องค์ประกอบทั้งหมดเท่ากัน เราทำการบวก คูณ ลบ หรือหารด้วยองค์ประกอบใดก็ได้ในองค์ประกอบอาร์เรย์

ตัวอย่าง

หากอาร์เรย์อินพุต ={1, 2, 3, 4} เราจำเป็นต้องมีการดำเนินการขั้นต่ำ 3 ครั้งเพื่อให้องค์ประกอบทั้งหมดเท่ากัน ตัวอย่างเช่น เราสามารถสร้างองค์ประกอบ 4 โดยการเพิ่ม 3 รายการ

อัลกอริทึม

<ก่อน>1. เลือกองค์ประกอบที่มีความถี่สูงสุด ให้เราเรียกมันว่า 'x'2 ตอนนี้เราต้องดำเนินการ n-x เนื่องจากมีองค์ประกอบ x ที่มีค่าเท่ากัน

ตัวอย่าง

#includeusing เนมสเปซ std;int getMinOperations (int * arr, int n) { แฮช unordered_map; สำหรับ (int i =0;i  maxFrequency) { maxFrequency =elem.second; } } return (n - maxFrequency);}int main() { int arr[] ={1, 2, 3, 4}; int n =sizeof(arr) / sizeof(arr[0]); cout <<"การดำเนินการที่จำเป็นขั้นต่ำ =" < 

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

ผลลัพธ์

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