C++の2D配列でピーク要素を検索します
このチュートリアルでは、2D配列のピーク要素を見つけるプログラムを作成します。
要素の周囲のすべての要素が要素よりも小さい場合、その要素はピーク要素と呼ばれます。
問題を解決するための手順を見てみましょう。
-
ダミーデータを使用して2Dアレイを初期化します。
-
2Dアレイを繰り返し処理します。
-
まず、2D配列のコーナー要素を確認します。
-
次に、2D配列の最初と最後の行の条件を記述します。
-
次に、2Dアレイの最初と最後の列を確認します。
-
そして最後に、真ん中の要素を確認します。
-
いずれの場合も、現在の要素をその周囲の要素と比較する必要があります。上記の条件により異なります。
-
結果が見つかった場所に値を返します。
-
例
コードを見てみましょう。
#include <bits/stdc++.h> using namespace std; const int MAX = 256; int findPeakElement(int arr[][MAX], int rows, int columns) { for (int i = 0; i < rows; i++) { for (int j = 0; j < columns; j++) { if (i == 0 && j == 0) { if (arr[i][j] > arr[i + 1][j] && arr[i][j] > arr[i][j + 1]) { return arr[i][j]; } } else if (i == 0 && j == columns - 1) { if (arr[i][j] > arr[i + 1][j] && arr[i][j] > arr[i][j - 1]) { return arr[i][j]; } } else if (i == rows - 1 && j == 0) { if (arr[i][j] > arr[i - 1][j] && arr[i][j] > arr[i][j + 1]) { return arr[i][j]; } } else if (i == rows - 1 && j == columns - 1) { if (arr[i][j] > arr[i - 1][j] && arr[i][j] > arr[i][j - 1]) { return arr[i][j]; } } else if (i == 0) { if (arr[i][j] > arr[i][j - 1] && arr[i][j] > arr[i][j + 1] && arr[i][j] > arr[i + 1][j]) { return arr[i][j]; } } else if (i == rows - 1) { if (arr[i][j] > arr[i][j - 1] && arr[i][j] > arr[i][j + 1] && arr[i][j] > arr[i - 1][j]) { return arr[i][j]; } } else if (j == 0) { if (arr[i][j] > arr[i - 1][j] && arr[i][j] > arr[i + 1][j] && arr[i][j] > arr[i][j + 1]) { return arr[i][j]; } } else if (j == columns - 1) { if (arr[i][j] > arr[i - 1][j] && arr[i][j] > arr[i + 1][j] && arr[i][j] > arr[i][j - 1]) { return arr[i][j]; } } else { if (arr[i][j] > arr[i][j - 1] && arr[i][j] > arr[i][j + 1] && arr[i][j] > arr[i - 1][j] && arr[i][j] > arr[i + 1][j]) { return arr[i][j]; } } } } return -1; } int main() { int arr[][MAX] = { { 1, 2, 3, 4 }, { 2, 3, 4, 5 }, { 1, 3, 7, 5 }, { 1, 2, 6, 6 } }; int rows = 4, columns = 4; cout << findPeakElement(arr, rows, columns) << endl; return 0; }
出力
上記のコードを実行すると、次の結果が得られます。
7
結論
チュートリアルに質問がある場合は、コメントセクションにそのことを記載してください。
-
二分探索アプローチを使用して配列のピーク要素を見つけるC++プログラム
このC++プログラムでは、バイナリ検索アプローチを使用して、配列のピークの1つを見つけることができます。このアルゴリズムは、アルゴリズムの時間計算量がO(log(n))である結果として見つかった最初のピークを返します。 アルゴリズム Begin PeakElement() function has ‘arr’ the array of data, start and end index in the argument list. Assign the mid of subpart of the array.  
-
配列の最大要素を見つけるためのC++プログラム
配列には複数の要素が含まれており、配列内の最大の要素は他の要素よりも大きい要素です。 たとえば。 5 1 7 2 4 上記の配列では、7が最大の要素であり、インデックス2にあります。 配列の最大の要素を見つけるプログラムは次のとおりです。 例 #include <iostream> using namespace std; int main() { int a[] = {4, 9, 1, 3, 8}; int largest, i, pos; largest = a[0