C++ 鞍点判断程序:高效代码示例及解析
下面是一个用 C++ 编写的判断鞍点的程序:
#include <iostream>
using namespace std;
bool isSaddlePoint(int matrix[][3], int row, int col) {
for (int i = 0; i < row; i++) {
int minRow = matrix[i][0];
int minColIdx = 0;
for (int j = 1; j < col; j++) {
if (matrix[i][j] < minRow) {
minRow = matrix[i][j];
minColIdx = j;
}
}
bool isMaxInCol = true;
for (int k = 0; k < row; k++) {
if (matrix[k][minColIdx] > minRow) {
isMaxInCol = false;
break;
}
}
if (isMaxInCol) {
cout << 'Saddle point found at (' << i << ', ' << minColIdx << '): ' << minRow << endl;
return true;
}
}
return false;
}
int main() {
int matrix[3][3] = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}};
bool hasSaddlePoint = isSaddlePoint(matrix, 3, 3);
if (!hasSaddlePoint) {
cout << 'No saddle point found.' << endl;
}
return 0;
}
此程序使用一个名为isSaddlePoint的函数来判断是否存在鞍点。该函数接受一个二维整数数组matrix、矩阵的行数row和列数col作为参数。在函数中,它首先遍历每一行,找到每行的最小值minRow以及对应的列索引minColIdx。然后,它检查该最小值是否在其所在列中是最大值。如果是,则找到了一个鞍点,打印鞍点的坐标和值,并返回true。如果没有找到鞍点,则返回false。
在main函数中,我们定义了一个3x3的矩阵matrix,并调用isSaddlePoint函数来判断是否存在鞍点。如果没有鞍点,则打印相应的消息。
代码解析:
-
isSaddlePoint函数:- 该函数遍历矩阵的每一行。
- 对于每行,找到最小值
minRow和其所在列的索引minColIdx。 - 然后,检查
minRow是否在其所在列中是最大值。如果是,则找到了一个鞍点,打印坐标和值,并返回true。 - 如果所有行都没有找到鞍点,则返回
false。
-
main函数:- 定义一个 3x3 的矩阵。
- 调用
isSaddlePoint函数,并根据返回值判断是否找到鞍点。 - 如果没有找到鞍点,则打印相应的消息。
使用方法:
- 将代码保存为
.cpp文件。 - 使用 C++ 编译器编译代码。
- 运行编译后的可执行文件。
注意:
- 该代码示例中的矩阵大小为 3x3。您可以根据需要修改矩阵的大小。
- 鞍点可能不存在。
- 如果有多个鞍点,程序只会找到第一个鞍点。
进一步学习:
您可以进一步学习如何使用 C++ 代码实现其他矩阵操作,例如矩阵加法、矩阵乘法、矩阵转置等。您还可以学习如何使用 C++ 标准库中的算法来简化矩阵操作。
原文地址: https://www.cveoy.top/t/topic/pgHt 著作权归作者所有。请勿转载和采集!