在C++中查詢二維陣列中的峰值元素
在本教程中,我們將編寫一個程式來查詢二維陣列中的峰值元素。
如果一個元素周圍的所有元素都小於該元素,則稱該元素為峰值元素。
讓我們看看解決這個問題的步驟。
用虛擬資料初始化二維陣列。
迭代二維陣列。
首先,檢查二維陣列的角元素。
接下來,編寫二維陣列第一行和最後一行元素的條件。
現在,檢查二維陣列的第一列和最後一列。
最後,檢查中間元素。
在每種情況下,都必須將當前元素與其周圍的元素進行比較。這根據上述條件而變化。
在找到結果的地方返回該值。
示例
讓我們看看程式碼。
#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
結論
如果您在本教程中遇到任何問題,請在評論部分提出。
廣告