求解矩阵的马鞍点c++
时间: 2023-12-03 16:42:07 浏览: 69
马鞍点是指在矩阵中某个元素是该行的最小值而又是该列的最大值,可以通过遍历矩阵来找到马鞍点。以下是一个 C++ 实现示例:
```c++
#include <iostream>
using namespace std;
const int ROW = 3; // 矩阵行数
const int COL = 4; // 矩阵列数
int main() {
int matrix[ROW][COL] = {{8, 2, 3, 4}, {5, 6, 7, 8}, {9, 10, 11, 12}}; // 定义矩阵
bool hasSaddlePoint = false; // 是否有马鞍点标记
for (int i = 0; i < ROW; i++) {
int minRow = matrix[i][0]; // 该行最小值
int colIndex = 0; // 该行最小值所在列的索引
// 找到该行最小值及其所在列的索引
for (int j = 1; j < COL; j++) {
if (matrix[i][j] < minRow) {
minRow = matrix[i][j];
colIndex = j;
}
}
// 判断该行最小值是否也是该列的最大值
bool isSaddlePoint = true;
for (int k = 0; k < ROW; k++) {
if (matrix[k][colIndex] > minRow) {
isSaddlePoint = false;
break;
}
}
// 如果是马鞍点,则输出并标记
if (isSaddlePoint) {
cout << "马鞍点为:" << minRow << endl;
hasSaddlePoint = true;
}
}
// 如果没有马鞍点,则输出提示信息
if (!hasSaddlePoint) {
cout << "该矩阵没有马鞍点!" << endl;
}
return 0;
}
```
以上代码中,首先定义了一个 3 行 4 列的矩阵,然后遍历每一行,找到该行的最小值及其所在列的索引,然后再判断该最小值是否同时也是该列的最大值,如果是,则输出该马鞍点并标记;如果没有找到马鞍点,则输出提示信息。