在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
结论
热门推荐
1 训练狗狗憋尿
2 狗狗追踪训练
3 狗狗训练要多少钱
5 深圳狗狗训练
6 训练狗狗唤回
7 狗狗叫怎么训练
8 狗狗训练班
10 狗狗社会化训练
11 狗狗叫回训练
12 广州狗狗训练学校
13 狗狗训练躺下
14 狗狗随行训练
15 训练狗狗巡回
16 狗狗要怎么训练
17 狗狗喂食训练
18 训练狗狗躺下