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

จำนวนการดำเนินการขั้นต่ำที่จำเป็นในการลบองค์ประกอบทั้งหมดของอาร์เรย์โดยใช้ C ++


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

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

  • องค์ประกอบใด ๆ จากอาร์เรย์สามารถเลือกได้โดยการสุ่มและทุกองค์ประกอบที่หารด้วยองค์ประกอบนี้สามารถลบออกจากอาร์เรย์ได้

ถ้า arr[] ={2, 4, 15, 10, 8, 5, 3} จำเป็นต้องดำเนินการ 3 ครั้งเพื่อลบองค์ประกอบทั้งหมด -

  • ถ้าเราเลือก 2 ก็จะลบ {2, 4, 10, 8}
  • ถ้าเราเลือก 5 มันก็จะลบ {5, 15}
  • ถ้าเราเลือก 3 มันก็จะลบ {3}

อัลกอริทึม

<ก่อน>1. เรียงลำดับอาร์เรย์จากน้อยไปมากและนับจำนวนการเกิดของแต่ละองค์ประกอบ2 สำหรับแต่ละองค์ประกอบที่ไม่ได้ทำเครื่องหมายที่เริ่มต้นจากจุดเริ่มต้น ให้ทำเครื่องหมายองค์ประกอบทั้งหมดที่หารด้วยการเลือกองค์ประกอบ และเพิ่มตัวนับผลลัพธ์

ตัวอย่าง

#include #include #define SIZE(arr) (sizeof(arr) / sizeof(arr[0]))#define MAX 100โดยใช้เนมสเปซ std;int getMinOperations(int *arr, int n) { แผนที่ int [สูงสุด] ={0}; เรียงลำดับ(arr, arr + n); สำหรับ (int i =0; i