Computer >> Máy Tính >  >> Lập trình >> C ++

Các phần tử khác biệt tối đa có thể được thêm vào một tập hợp trong C ++


Theo bài toán ta được một tập hợp arr [n] trong đó n là số phần tử nguyên trong tập hợp, nhiệm vụ là tìm các phần tử có hiệu số lớn nhất sẽ được thêm vào để có được các phần tử trong tập hợp. Nói cách khác, sự khác biệt phải ở dạng | a-b | trong đó 'a' và 'b' đều nằm trong tập hợp và sự khác biệt của chúng không được nhỏ nhất. Vì vậy, chúng tôi sẽ đếm số lượng chênh lệch tối đa khác biệt và lớn nhất từ ​​một tập hợp. Hãy hiểu vấn đề và giải pháp của nó với sự trợ giúp của một ví dụ.

Đầu vào - set ={1, 5}

Đầu ra - Các phần tử khác biệt tối đa có thể thêm vào một tập hợp là:1

Giải thích - Chỉ có 1 sự khác biệt trong tập hợp, tức là | 1-5 | =4

Đầu vào - set ={2, 7, 1, 9}

Đầu ra - Chênh lệch tối đa

các phần tử có thể thêm vào một tập hợp là:5

Giải thích - Sự khác biệt trong tập hợp như sau -

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

Phương pháp tiếp cận được sử dụng trong chương trình dưới đây như sau

  • Lấy một mảng số nguyên arr [n] để lưu trữ các giá trị của tập hợp.

  • Trong hàm tối đa (), hãy làm theo các bước từ 3 đến 6.

  • Khai báo một phần tử ele, temp, val và đặt giá trị của chúng bằng arr [0]

  • Lặp lại i từ 1 cho đến khi kích thước của mảng tăng lên 1 bậc.

    • Tìm gcd của tất cả các phần tử trong mảng.

    • Đặt nhiệt độ làm giá trị lớn nhất giữa tạm thời hoặc arr [i].

  • Đặt tổng là nhiệt độ / giá trị và tối đa là hiệu số của tổng và kích thước.

  • Trả lại và in tối đa.

Ví dụ

#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;
}

Đầu ra

Nếu chúng ta chạy đoạn mã trên, chúng ta sẽ nhận được kết quả sau -

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