首頁 > 後端開發 > C++ > 使用C++找到數組中唯一配對的數量

使用C++找到數組中唯一配對的數量

WBOY
發布: 2023-09-07 11:53:09
轉載
541 人瀏覽過

使用C++找到數組中唯一配對的數量

我們需要適當的知識才能在 C 的陣列語法中創建幾個唯一的對。在尋找唯一對的數量時,我們計算給定數組中的所有唯一對,即可以形成所有可能的對,其中每個對應該是唯一的。例如-

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
登入後複製

尋找解決方案的方法

有兩種方法可以解決這個問題,它們是−

暴力方法

在這種方法中,我們將遍歷每個可能的配對,將這些配對加入一個集合中,最後找出集合的大小。這種方法的時間複雜度是O(n2 log n)。

範例

#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;
}
登入後複製

輸出

Number of unique pairs : 16
登入後複製
登入後複製

上述程式碼的解釋

在這段程式碼中,首先我們宣告了一個集合變量,然後使用兩個循環遍歷每對可能的元素,並使用i和j將每對元素插入集合中。然後我們計算集合的大小並列印結果。

高效的方法

另一種方法是先找出數組中唯一數字的數量;現在,除了它本身之外,每個其他唯一元素都可以與任何其他唯一元素創建一對,因此唯一對的數量等於所有唯一數字的平方。此方法的時間複雜度為O(n)。

範例

#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;
}
登入後複製

輸出

Number of unique pairs : 16
登入後複製
登入後複製

上述程式碼的解釋

在這段程式碼中,我們宣告了一個集合,然後遍歷數組的每個元素,將每個元素插入集合中。之後,我們計算了集合的大小,並根據公式n2找到了結果,並列印出輸出。

結論

在本文中,我們解決了在陣列中找到唯一對數的問題,討論了兩種解決方法,即簡單和高效。在簡單的方法中,我們將所有可能的對數插入到具有O(n2 log n)時間複雜度的集合中,而在高效的方法中,我們找到所有唯一的數字,並透過n2找到結果。我們可以使用其他語言(如C、Java、Python和其他語言)編寫相同的程式。希望您會發現這篇文章有幫助。

以上是使用C++找到數組中唯一配對的數量的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:tutorialspoint.com
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板