C++で特定の行ごとにソートされた行列のすべての行で共通の要素を検索します
各行がソートされている行列があるとします。各行の共通要素を見つける関数を作成する必要があります。マトリックスが次のようになっていると仮定します-
結果は5になります。
これを解決するために、ハッシュベースのアプローチを使用します。このアプローチは、行がソートされていない場合にも使用できます。これを行うには、いくつかの手順に従う必要があります-
2つの1の個別の要素としてすべてのキーを含む1つのハッシュテーブルを作成します。すべての値は0になります
行列の各要素をループします。ハッシュテーブルに数値が存在する場合は、カウントを1増やします。最後に、行列の行番号と同じカウントの値があるかどうかを確認します。もしそうなら、それは各行に存在します。 (1つの値が1つの行で繰り返されていないと仮定します)
例
#include<iostream> #include<unordered_map> #define M 4 #define N 5 using namespace std; int getCommonElement(int matrix[M][N]) { unordered_map<int, int> count; int i, j; for (i = 0; i < M; i++) { count[matrix[i][0]]++; for (j = 1; j < N; j++) { if (matrix[i][j] != matrix[i][j - 1]) count[matrix[i][j]]++; } } for (auto ele : count) { if (ele.second == M) return ele.first; } return -1; } int main() { int matrix[M][N] = { { 1, 2, 3, 4, 5 }, { 2, 4, 5, 8, 10 }, { 3, 5, 7, 9, 11 }, { 1, 3, 5, 7, 9 }, }; int result = getCommonElement(matrix); if (result == -1) cout << "No common element has found"; else cout << "Common element is " << result; }
出力
Common element is 5
-
C++で特定のセットのすべての個別のサブセットを検索します
ここでは、特定のセットのすべての個別のサブセットを表示する方法を説明します。したがって、セットが{1、2、3}の場合、サブセットは{}、{1}、{2}、{3}、{1、2}、{2、3}、{1、3}になります。 、{1、2、3}。すべてのサブセットのセットは、べき集合と呼ばれます。べき集合には2n個の要素があります。 0から2n(を除く)をループし、各反復で、現在のカウンターのi番目のビットが設定されているかどうかを確認してから、i番目の要素を出力します。 例 #include<iostream> #include<cmath> using namespace std;
-
Pythonで行列のすべての行に共通する個別の要素を見つける
次数mxmの正方行列があるとします。与えられた行列のすべての行に共通するすべての異なる要素を見つける必要があります。 したがって、入力が次のような場合 13 2 15 4 17 15 3 2 4 36 15 2 15 4 12 15 26 4 3 2 2 19 4 22 15 この場合、出力は[2,4,15]になります。 これを解決するには、次の手順に従います- 関数sortRows()を定義します。これにはマトリックスが必要です n:=行数 0