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

Tìm số lượng các cặp duy nhất trong một mảng bằng cách sử dụng C ++

Chúng tôi yêu cầu kiến ​​thức thích hợp để tạo một số cặp duy nhất trong cú pháp mảng trong C ++. Khi tìm số cặp duy nhất, chúng tôi đếm tất cả các cặp duy nhất trong một mảng nhất định, tức là tất cả các cặp có thể có có thể được tạo thành trong đó mỗi cặp phải là duy nhất. Ví dụ -

Input : array[ ] = { 5, 5, 9 }
Output : 4
Explanation : The number of all unique pairs are (5, 5), (5, 9), (9, 5) and (9, 9).

Input : array[ ] = { 5, 4, 3, 2, 2 }
Output : 16

Phương pháp tiếp cận để tìm ra giải pháp

Có hai Cách tiếp cận cho Giải pháp này và chúng -

Phương pháp tiếp cận vũ phu

Trong cách tiếp cận này, chúng tôi sẽ xem xét từng cặp có thể có, thêm các cặp đó vào một tập hợp, và cuối cùng tìm ra kích thước của tập hợp đó. Độ phức tạp về thời gian của phương pháp này là O (n2 log n).

Ví dụ

#include <bits/stdc++.h>
using namespace std;
int main () {
   int arr[] = { 5, 4, 3, 2, 2 };
   int n = sizeof (arr) / sizeof (arr[0]);
   // declaring set to store pairs.
   set < pair < int, int >>set_of_pairs;

   for (int i = 0; i < n; i++)
      for (int j = 0; j < n; j++)
         set_of_pairs.insert (make_pair (arr[i], arr[j]));

   int result = set_of_pairs.size();

   cout <<"Number of unique pairs : " << result;
   return 0;
}

Đầu ra

Number of unique pairs : 16

Giải thích về đoạn mã trên

Trong đoạn mã này, đầu tiên, chúng ta khai báo một biến tập hợp, sau đó, sử dụng hai vòng lặp, chúng ta duyệt qua từng cặp có thể và chèn từng cặp vào tập hợp bằng cách sử dụng i và j. Sau đó, chúng tôi tính toán kích thước của tập hợp và in kết quả.

Phương pháp tiếp cận hiệu quả

Một cách tiếp cận khác là trước tiên tìm ra số lượng các số duy nhất trong một mảng; bây giờ, mọi phần tử duy nhất khác, bao gồm cả chính nó, có thể tạo ra một cặp với bất kỳ phần tử duy nhất nào khác, vì vậy số lượng các cặp duy nhất bằng bình phương của số tất cả các số duy nhất. Độ phức tạp về thời gian của phương pháp tiếp cận của anh ấy là O (n).

Ví dụ

#include <bits/stdc++.h>
using namespace std;

int main () {
   int arr[] = { 5, 4, 3, 2, 2 };
   int n = sizeof (arr) / sizeof (arr[0]);

   // declaring set to store unique elements.

   unordered_set < int >set_of_elements;
   // inserting elements in the set.
   for (int i = 0; i < n; i++)
      set_of_elements.insert (arr[i]);

   int size = set_of_elements.size ();
   // finding number of unique pairs
   int result = size * size;

   cout << "Number of unique pairs in an array: " << result;
   return 0;
}

Đầu ra

Number of unique pairs : 16

Giải thích về đoạn mã trên

Trong đoạn mã này, chúng ta khai báo một tập hợp và sau đó đi qua từng phần tử của mảng để chèn mọi phần tử trong tập hợp. Sau đó, chúng tôi tính toán kích thước của tập hợp và tìm ra kết quả từ công thức n2 và in kết quả.

Kết luận

Trong bài viết này, chúng tôi giải quyết vấn đề tìm số cặp duy nhất trong một mảng, trong đó chúng tôi thảo luận về hai cách để giải quyết vấn đề, tức là đơn giản và hiệu quả. Theo cách tiếp cận đơn giản, chúng tôi chèn tất cả các cặp có thể có trong một tập hợp với độ phức tạp thời gian là O (n2 log n) và theo cách tiếp cận hiệu quả, chúng tôi tìm tất cả các số duy nhất và tìm kết quả với n2. Chúng ta có thể viết cùng một chương trình bằng các ngôn ngữ khác như C, java, python và các ngôn ngữ khác. Hy vọng bạn thấy bài viết này hữu ích.