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
この問題を解決するには 2 つの方法があります。それらは -
この方法では、考えられる各ペアをループし、これらのペアをセットに追加し、最後にセットのサイズを見つけます。この方法の時間計算量は 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
このコードでは、最初にコレクション変数を宣言し、次にすべてのループを 2 つ使用します。可能な要素のペアを選択し、i と j を使用して各ペアをセットに挿入します。次に、コレクションのサイズを計算し、結果を出力します。
もう 1 つの方法は、まず配列内の一意の数値の数を見つけることです。これで、他のすべての一意の要素は、それ自体の 1 つのペアを除く他の一意の要素で作成できるようになります。一意のペアの数は、すべての一意の数値の 2 乗に等しくなります。このメソッドの時間計算量は 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 に従って結果を求め、出力を出力しました。
この記事では、配列内で一意のペアを見つける問題を解決し、シンプルと効率の 2 つの解決策について説明しました。単純なアプローチでは、考えられるすべてのペアを O(n2 log n) の時間計算量でセットに挿入しますが、効率的なアプローチでは、すべての一意の数値を見つけて、結果を n2 で求めます。同じプログラムを C、Java、Python などの他の言語で書くことができます。この記事がお役に立てば幸いです。
以上がC++ を使用して配列内の一意のペアの数を見つけるの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。