找出一个二维数组的鞍点,用c++语言写出来
时间: 2024-11-05 13:25:19 浏览: 97
在二维数组中,鞍点是指一个元素既不是最大值也不是最小值的特定位置,其左右、上下相邻的元素都大于或小于它。以下是使用C++编写的一个简单的函数,用于找到二维数组中的鞍点:
```cpp
#include <vector>
using namespace std;
// 定义比较函数,用于辅助查找
bool compare(vector<int>& arr, int i, int j, int k) {
if (arr[i][j] > arr[i][k]) return false;
if (arr[i][j] < arr[i][k]) return true;
if (arr[j][i] < arr[k][i]) return true;
return false;
}
pair<int, int> findPivot(vector<vector<int>>& matrix) {
// 遍历矩阵寻找最小值的行和最大值的列
int rows = matrix.size();
int cols = matrix[0].size();
int min_row = rows - 1, max_col = 0;
int max_val = matrix[0][0], min_val = matrix[0][0];
for (int i = 0; i < rows; ++i) {
for (int j = 1; j < cols; ++j) { // 忽略边界
if (matrix[i][j] < min_val) {
min_row = i;
min_val = matrix[i][j];
}
}
}
for (int j = 0; j < cols; ++j) {
if (matrix[min_row][j] > max_val) {
max_col = j;
max_val = matrix[min_row][j];
}
}
return make_pair(min_row, max_col);
}
阅读全文