C++の配列のすべてのトリプレット間のXORの最大値
この問題では、整数の配列が与えられます。私たちのタスクは、配列のすべてのトリプレットの中でXORの最大値を作成することです。
問題を理解するために例を見てみましょう
入力 −配列={5、6、1、2}
出力 − 6
説明 −
All triplets are: 5^6^1 = 2 5^6^2 = 1 5^1^2 = 6 6^1^2 = 5
この問題を解決するための直接的なアプローチは、考えられるすべてのトリプレットのXORを見つけて、すべてのトリプレットの最大値を出力することです。配列内に膨大な数の要素がある配列を操作する場合、これは効果的ではありません。
最大のXORを見つけるために、最初に要素のすべてのペアのXORを含むセットを作成します。次に、すべてのペアと要素の間のXORを見つけ、最大XORを見つけます。
例
ソリューションの動作を説明するプログラム
#include <bits/stdc++.h> using namespace std; int MaxTripletXor(int n, int a[]){ set<int> XORpair; for (int i = 0; i < n; i++) { for (int j = i; j < n; j++) { XORpair.insert(a[i] ^ a[j]); } } int maxXOR = 0; for (auto i : XORpair) { for (int j = 0; j < n; j++) { maxXOR = max(maxXOR, i ^ a[j]); } } return maxXOR; } int main(){ int matrix[] = {1, 2, 3, 5, 7}; int n = sizeof(matrix) / sizeof(matrix[0]); cout<<"The maximum XOR sum triplets is "<<MaxTripletXor(n, matrix); return 0; }
出力
The maximum XOR sum triplets is 7
-
C++の配列内のすべてのペアのXORの合計
この問題では、n個の整数の配列arr[]が与えられます。私たちのタスクは、配列内のすべてのペアのXORの合計を見つけるプログラムを作成することです。 問題を理解するために例を見てみましょう Input: arr[] = {5, 1, 4} Output: 10 Explanation: the sum of all pairs: 5 ^ 1 = 4 1 ^ 4 = 5 5 ^ 4 = 1 sum = 4 + 5 + 1 = 10 この問題を解決する簡単な方法の1つは、ネストされたループを実行して、数値のすべてのペアを見つけることです。各ペアのXORを見つけて、合計に追加します。 アルゴリズム
-
C++の配列内のすべての素数の積
いくつかの要素を持つ整数配列arr[]が与えられた場合、タスクはその数のすべての素数の積を見つけることです。 素数は、1で割った数、またはその数自体です。または、素数は、1とその数自体を除いて他の数で割り切れない数です。 1、2、3、5、7、11など 与えられた配列の解を見つける必要があります- 入力 −arr [] ={11、20、31、4、5、6、70} 出力 − 1705 説明 −配列の素数は− 11、31、5であり、それらの積は1705 入力 − arr [] ={1、2、3、4、5、6、7} 出力 − 210 説明 −配列の素数は− 1、2、3、5、7