c++查找二维数组的鞍点
时间: 2025-01-07 11:20:42 浏览: 51
### C++ 实现查找二维数组中的鞍点
在 C++ 中,可以编写一个函数来查找给定矩阵中的鞍点。鞍点定义为在同一行中是最小值,在同一列中是最大值的元素。
#### 鞍点查找算法描述
对于每一个元素 `matrix[i][j]`,如果该元素在其所在行中最小而在其所在列中最大,则此元素即为鞍点[^1]。
#### 完整代码实现
下面是一个完整的 C++ 程序用于检测并打印出所有的鞍点:
```cpp
#include <iostream>
using namespace std;
void findSaddlePoints(int matrix[][5], int rows, int cols) {
bool isSaddle;
for (int i = 0; i < rows; ++i) { // Traverse through all the elements of a row.
int minRowValue = matrix[i][0];
int colIndexWithMinVal = 0;
// Find minimum value element in current row and its column index.
for (int j = 1; j < cols; ++j) {
if (minRowValue > matrix[i][j]) {
minRowValue = matrix[i][j];
colIndexWithMinVal = j;
}
}
isSaddle = true;
// Check whether this smallest number among that row has maximum occurrence within its corresponding column or not.
for (int k = 0; k < rows && isSaddle; ++k) {
if (matrix[k][colIndexWithMinVal] > minRowValue)
isSaddle = false;
}
if (isSaddle)
cout << "Saddle Point found at [" << i << "][" << colIndexWithMinVal << "] with value: " << minRowValue << endl;
}
}
// Example usage:
int main() {
const int ROWS = 3, COLS = 3;
int mat[ROWS][COLS] = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}};
findSaddlePoints(mat, ROWS, COLS);
}
```
这段程序遍历每一行找到每行内的最小值,并检查这些最小值是否也是它们各自列的最大值。如果是的话就找到了鞍点[^2]。
阅读全文
相关推荐


















