ภารกิจคือการค้นหาความแตกต่างที่ยิ่งใหญ่ที่สุดระหว่างผลรวมขององค์ประกอบ m ในอาร์เรย์ สมมติว่าเรามีอาร์เรย์และตัวเลข m แล้ว ขั้นแรกเราจะหาผลรวมของตัวเลข m สูงสุด แล้วลบผลรวมของตัวเลข m ต่ำสุด จากนั้นจึงได้ค่าส่วนต่างสูงสุด สิ่งสำคัญคือการหาเซตย่อยของตัวเลข m สองชุดซึ่งมีผลรวมสูงสุดและผลรวมต่ำสุด
ตอนนี้มาทำความเข้าใจสิ่งที่เราต้องทำโดยใช้ตัวอย่าง -
ป้อนข้อมูล
arr ={1,2,3,4,5}; ม=3
ผลผลิต
ความแตกต่างสูงสุดที่นี่คือ :6
คำอธิบาย − ในที่นี้ ตัวเลข 3 ตัวสูงสุดคือ 3,4,5 และผลรวมคือ 12 ตัวเลข 3 ตัวที่ต่ำที่สุดคือ 1,2,3 และผลรวมคือ 6 ดังนั้นความแตกต่างสูงสุดหรือสูงสุดคือ 12-6 ซึ่งก็คือ 6
ป้อนข้อมูล
<ก่อน>arr ={10,13,22,8,16,14}; ม=4ผลผลิต
ความแตกต่างสูงสุดที่นี่คือ:20
คำอธิบาย − ในที่นี้ ตัวเลข 4 ตัวสูงสุดคือ 22,16,14,13 และผลรวมคือ 65 ตัวเลข 4 ตัวต่ำสุดคือ 8,10,13,14 และผลรวมคือ 45 ดังนั้นความแตกต่างสูงสุดหรือสูงสุดคือ 65-45 ซึ่งเท่ากับ 20
แนวทางที่ใช้ในโปรแกรมด้านล่างดังนี้
-
นำอาร์เรย์อินพุต arr[] และตัวเลข m มาสร้างเซต
-
ในฟังก์ชัน find_diff() เรากำลังส่งผ่านอาร์เรย์อินพุตและมีความยาวและส่งกลับค่าความแตกต่างสูงสุดของผลรวมชุดขององค์ประกอบ m
-
ที่นี่เราจะเรียงลำดับองค์ประกอบของอาร์เรย์ arr[] ก่อน
-
จากนั้นเราจะหาผลรวมขององค์ประกอบ m แรกและ m สุดท้าย เนื่องจากจะเป็นจำนวน m ที่น้อยที่สุดและสูงสุด m ของ arr[]
-
ในที่สุดเราก็คืนส่วนต่าง
-
หมายเหตุ - sort(arr[],int) จะถือว่าส่งคืนอาร์เรย์ที่จัดเรียง
ตัวอย่าง
#include//create ฟังก์ชั่นเพื่อคำนวณความแตกต่างสูงสุดระหว่างผลรวมขององค์ประกอบ m สูงสุดและต่ำสุดของ arrayint find_diff(int arr[],int length,int m){ //สำหรับการเรียงลำดับอาร์เรย์ sort( arr,ความยาว); int maxsum=0, ค่าต่ำสุด=0; //คำนวณความแตกต่างสูงสุดระหว่างสองชุดย่อยขององค์ประกอบ m สำหรับ (int i=0;i ผลลัพธ์
หากเราเรียกใช้โค้ดข้างต้น เราจะได้ผลลัพธ์ดังต่อไปนี้ -
12