用c++编写在二维数组找到鞍点
时间: 2024-12-06 12:33:39 浏览: 41
在C++中,鞍点是指一个数组中的元素,它的值既不大于数组上方的元素也不小于下方的元素。为了在二维数组(矩阵)中寻找鞍点,可以遍历整个矩阵,同时检查每个位置的左、右、上、下的邻域值。
下面是一个简单的示例代码,它使用了嵌套循环来访问矩阵的每个元素,并进行比较:
```cpp
#include <vector>
// 定义一个函数用于查找鞍点
std::pair<int, int> findSaddlePoint(const std::vector<std::vector<int>>& matrix) {
int rows = matrix.size();
if (rows == 0) return {};
for (int i = 0; i < rows; ++i) {
for (int j = 0; j < rows; ++j) {
// 检查上方、下方、左边和右边的元素
int above = i > 0 ? matrix[i - 1][j] : INT_MAX;
int below = i + 1 < rows ? matrix[i + 1][j] : INT_MIN;
int left = j > 0 ? matrix[i][j - 1] : INT_MAX;
int right = j + 1 < rows ? matrix[i][j + 1] : INT_MIN;
// 如果当前位置的值小于上方和右边,大于下方和左边,则找到了鞍点
if (matrix[i][j] < above && matrix[i][j] < right && matrix[i][j] > below && matrix[i][j] > left) {
return {i, j};
}
}
}
// 没有找到鞍点返回空
return {};
}
int main() {
std::vector<std::vector<int>> arr = {{9, 8, 7}, {6, 5, 4}, {3, 2, 1}};
auto saddle_point = findSaddlePoint(arr);
if (!saddle_point.empty()) {
std::cout << "Found saddle point at (" << saddle_point.first << ", " << saddle_point.second << "): value is " << matrix[saddle_point.first][saddle_point.second] << std::endl;
} else {
std::cout << "No saddle point found." << std::endl;
}
return 0;
}
```
阅读全文