<C++> 判断一个二维数组是否有“鞍点”,即某位置上的元素在该行上最大,在该列上最小。如有,输出其行列号和值;若无,给出提示。
时间: 2024-10-28 09:11:50 浏览: 41
在 C++ 中,判断一个二维数组(通常是整数数组)是否有鞍点,可以采用两层循环遍历的方式。首先,对于每个元素,我们需要检查它是否同时满足两个条件:
1. 它的值小于其上方的元素(表示在当前行的最大值)
2. 它的值大于其左边的元素(表示在当前列的最小值)
如果找到这样的元素,我们就可以认为找到了一个鞍点,并记录下它的坐标(行号和列号)以及对应的值。下面是一个简单的函数实现示例:
```cpp
#include <vector>
using namespace std;
void findHorseRacePoint(vector<vector<int>>& matrix, int& row, int& col, int& value) {
int numRows = matrix.size();
int numCols = matrix[0].size();
for (int i = 1; i < numRows; ++i) {
for (int j = 0; j < numCols - 1; ++j) { // 避免越界,因为左边界是0
if (matrix[i][j] > matrix[i][j + 1] && matrix[i][j] < matrix[i - 1][j]) {
row = i;
col = j;
value = matrix[i][j];
return; // 找到鞍点后立即返回
}
}
}
// 如果遍历完都没有找到,则输出提示信息
cout << "No horse race point found." << endl;
}
// 使用示例
int main() {
vector<vector<int>> matrix = {{3, 6, 1}, {5, 9, 4}, {2, 8, 7}};
int row, col, value;
findHorseRacePoint(matrix, row, col, value);
if (row != -1) {
cout << "Row: " << row << ", Column: " << col << ", Value: " << value << endl;
}
return 0;
}
```
在这个例子中,`findHorseRacePoint` 函数接收一个二维数组、以及三个引用作为结果存储位置。如果找到鞍点,将它们的值赋给相应的变量并结束函数。如果没有找到,会在主函数中打印出提示信息。
阅读全文