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

ความแตกต่างสูงสุดระหว่างสองชุดย่อยขององค์ประกอบ m ใน C


ภารกิจคือการค้นหาความแตกต่างที่ยิ่งใหญ่ที่สุดระหว่างผลรวมขององค์ประกอบ 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