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

องค์ประกอบความแตกต่างสูงสุดที่สามารถเพิ่มไปยังชุดใน C++


จากปัญหาเราได้รับชุด arr[n] โดยที่ n คือจำนวนองค์ประกอบจำนวนเต็มในชุด ภารกิจคือการค้นหาองค์ประกอบความแตกต่างสูงสุดที่จะเพิ่ม เพื่อให้ได้องค์ประกอบในชุด กล่าวอีกนัยหนึ่งความแตกต่างควรอยู่ในรูป |a-b| โดยที่ 'a' และ 'b' ทั้งคู่อยู่ในเซตและความแตกต่างไม่ควรน้อยที่สุด ดังนั้น เราจะนับจำนวนความแตกต่างสูงสุดซึ่งแตกต่างและมากที่สุดจากชุด มาทำความเข้าใจปัญหาและวิธีแก้ปัญหาด้วยตัวอย่าง

ป้อนข้อมูล − set ={1}, 5}

ผลผลิต − องค์ประกอบความแตกต่างสูงสุดที่สามารถเพิ่มลงในชุดได้คือ:1

คำอธิบาย − ในชุดมีความแตกต่างกันเพียง 1 ข้อเท่านั้น คือ |1-5| =4

ป้อนข้อมูล − set ={2, 7, 1, 9}

ผลผลิต − ความแตกต่างสูงสุด

องค์ประกอบที่สามารถเพิ่มลงในชุดได้คือ:5

คำอธิบาย − ข้อแตกต่างในชุดมีดังนี้ −

|2-7| = 5
|7-1| = 6
|1-9| = 8
|2-9| = 7
|7-9| = 2

แนวทางที่ใช้ในโปรแกรมด้านล่างดังนี้

  • ใช้อาร์เรย์จำนวนเต็ม arr[n] เพื่อเก็บค่าของชุด

  • ในฟังก์ชัน maximum() ให้ทำตามขั้นตอนที่ 3 ถึง 6

  • ประกาศองค์ประกอบ ele, temp, val และตั้งค่าให้เท่ากับ arr[0]

  • วน i ตั้งแต่ 1 จนถึงขนาดของอาร์เรย์เพิ่มขึ้น 1 ขั้น

    • ค้นหา gcd ขององค์ประกอบทั้งหมดในอาร์เรย์

    • ตั้งค่า temp เป็นค่าสูงสุดระหว่าง temp หรือ arr[i].

  • ตั้งค่าผลรวมเป็น temp/val และ max เป็นความแตกต่างของผลรวมและขนาด

  • ส่งคืนและพิมพ์สูงสุด

ตัวอย่าง

#include <bits/stdc++.h>
using namespace std;
//function to find maximum difference element
int maximum(int arr[], int size){
   int ele = arr[0];
   int val = ele;
   int temp = ele;
   for (int i = 1; i < size; i++){
      val = __gcd(val, arr[i]);
      temp = max(temp, arr[i]);
   }
   int total = temp / val;
   int max = total - size;
   return max;
}
int main(){
   int arr[] = { 2, 7, 1, 9};
   int size = sizeof(arr) / sizeof(arr[0]);
   cout<<"Maximum difference elements that can added to a set is: "<<maximum(arr, size);
   return 0;
}

ผลลัพธ์

หากเราเรียกใช้โค้ดข้างต้น เราจะได้ผลลัพธ์ดังต่อไปนี้ -

Maximum difference elements that can added to a set is: 5