ペア(p、q)をカウントして、pが配列で少なくともq回発生し、qがC++で少なくともp回発生するようにします。
正の整数の配列が与えられます。目標は、ペアが要素(p、q)を持つように、arr []の要素のペアの数を見つけることです。ここで、pは少なくともq回配列で発生し、qは少なくともp回配列で発生します。
>例を挙げて理解しましょう。
入力 − int arr [] ={3、3、3、5、5、6、6}
出力 − 1つの頻度が少なくとも他の値になるような配列内のペアの数は、− 1
説明 − pがq回発生し、qがp回発生する配列の有効なペアは、3が配列で3回発生するため、(3、3)です。したがって、有効なペアは1つしかないため、カウントは1です。
入力 − int arr [] ={3、3、3、3、3、5、5、5、6、6}
出力 − 1つの頻度が少なくとも他の値になるような配列内のペアの数は、− 1
説明 − pがq回発生し、qがp回発生するアレイの有効なペアは、(3、3)、(5、5)、および(3、5)です。3は5回発生し、5はアレイで3回発生します。 。したがって、有効なペアは3つあるため、カウントは3になります。
以下のプログラムで使用されているアプローチは次のとおりです
-
整数要素の配列を入力し、配列のサイズを計算して、さらに処理するためにデータを関数に渡します
-
pとqの出現を格納するために一時変数カウントを宣言します
-
タイプvectorの変数vecとタイプunordered_mapのumを作成します
-
0から配列のサイズまでループFORを開始します
-
ループ内で、um [arr [i]]を1に設定し、umが1であるかどうかを確認してから、ベクトルでarr[i]をプッシュします
-
0からベクトルのサイズまで別のループFORを開始し、IF um [vec [i]
-
ループ内でjチェックIFum[j]> =vec [i]次に、カウントを1ずつ増やします
-
カウントを返す
-
結果を印刷します。
例
#include <bits/stdc++.h> using namespace std; int pair_count(int arr[], int len){ int count = 0; vector<int> vec; unordered_map<int, int> um; for (int i = 0; i < len; i++){ um[arr[i]]++; if (um[arr[i]] == 1){ vec.push_back(arr[i]); } } for (int i = 0; i < vec.size(); i++){ if (um[vec[i]] < vec[i]){ continue; } else if (um[vec[i]] == vec[i]){ count++;; } else{ count++; for (int j = vec[i] + 1; j <= um[vec[i]]; j++){ if (um[j] >= vec[i]){ count++; } } } } return count; } int main(){ int arr[] = { 1, 1, 1, 5, 5, 1}; int size = sizeof(arr) / sizeof(arr[0]); cout<<"Count of pairs (p, q) such that p occurs in array at least q times and q occurs at least p times are: "<<pair_count(arr, size); return 0; }
出力
上記のコードを実行すると、次の出力が生成されます-
Count of pairs (p, q) such that p occurs in array at least q times and q occurs at least p times are: 1
-
C ++を使用して、XORが0になるような配列内のペアの数を見つけます。
n個の要素の配列があるとします。 XORが0になる配列内のペアの数を見つける必要があります。XORが0のペア(x、y)の場合、x=yです。これを解決するために、配列を並べ替えることができます。次に、2つの連続する要素が同じである場合は、カウントを増やします。すべての要素が同じである場合、最後のカウントはカウントされない場合があります。その場合、最後の要素と最初の要素が同じであるかどうかを確認し、同じである場合は、カウントを1つ増やします。 例 #include<iostream> #include<algorithm> using namespace std; in
-
C ++でa%b =kとなるような配列内のすべてのペア(a、b)を検索します
配列Aがあるとすると、その配列から、a%b =kとなるようにすべてのペア(a、b)を取得する必要があります。配列がA=[2、3、4、5、7]、k =3であるとすると、ペアは(7、4)、(3、4)、(3、5)、(3、7)になります。 これを解決するために、リストをトラバースして、指定された条件が満たされているかどうかを確認します。 例 #include <iostream> using namespace std; bool displayPairs(int arr[], int n, int k) { bool pairAvilable = true;