找出一个二维数组的鞍点,写一个c++,头文件是iostream
时间: 2024-12-23 08:20:21 浏览: 1
找出二维数组中的鞍点是指找到数组中同时满足两个条件的元素:它的值小于其上一列的最大值,也大于其下一列的最小值。下面是一个简单的C++函数,用于寻找二维数组中的鞍点,并假设二维数组已经初始化并包含非负整数:
```cpp
#include <iostream>
#include <vector>
// 定义二维数组
std::vector<std::vector<int>> matrix; // 替换成实际的二维数组
// 辅助函数用于获取行索引和列索引范围内的最大值和最小值
int getMax(std::vector<int>& row, int start, int end) {
int max = row[start];
for (int i = start + 1; i <= end; ++i) {
if (row[i] > max)
max = row[i];
}
return max;
}
int getMin(std::vector<int>& row, int start, int end) {
int min = row[start];
for (int i = start + 1; i <= end; ++i) {
if (row[i] < min)
min = row[i];
}
return min;
}
// 查找鞍点函数
void findHillValleyPoint() {
int numRows = matrix.size();
int numCols = matrix[0].size();
// 遍历矩阵
for (int i = 1; i < numRows - 1; ++i) { // 上下边界不计算
for (int j = 1; j < numCols - 1; ++j) { // 左右边界不计算
int currentVal = matrix[i][j];
// 检查是否为鞍点条件
if (currentVal > matrix[i - 1][j] && currentVal < matrix[i + 1][j]) {
std::cout << "Found a valley at (" << i << ", " << j << "): " << currentVal << std::endl;
} else if (currentVal < matrix[i - 1][j] && currentVal > matrix[i + 1][j]) {
std::cout << "Found a hill at (" << i << ", " << j << "): " << currentVal << std::endl;
}
}
}
}
int main() {
// 填充二维数组
// matrix = {{...}, {...}, ...}; // 这里需要替换为实际的二维数组
// 调用函数查找鞍点
findHillValleyPoint();
return 0;
}
```
阅读全文