คำชี้แจงปัญหา
เมื่อกำหนด 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 ผลลัพธ์
เมื่อคุณคอมไพล์และรันโปรแกรมข้างต้น มันสร้างผลลัพธ์ต่อไปนี้ -
การดำเนินการที่จำเป็นขั้นต่ำ =3