C++ 编写程序实现:在矩阵中,一个元素在所在行是最大值,在所在列是最小值,则被称为鞍点。输入两个正整数m和n(m,n<=10),然后输入该m行n列矩阵中的元素,如果找到矩阵的鞍点(题目输入的数据保证保证最多只有一个鞍点),则输出其下标,否则输出“Not Found”。
时间: 2024-12-25 20:26:47 浏览: 15
在C++中,你可以通过遍历矩阵的方式来寻找鞍点。下面是一个简单的示例代码实现:
```cpp
#include <iostream>
using namespace std;
// 定义矩阵结构体
struct Point {
int row;
int col;
};
bool isHorsePoint(int matrix[][n], int m, int n) {
// 初始化行最大值和列最小值
int max_row[m] = {0};
int min_col[n] = INT_MAX;
// 找到每一行的最大值
for (int i = 0; i < m; ++i) {
for (int j = 0; j < n; ++j) {
if (matrix[i][j] > max_row[i]) {
max_row[i] = matrix[i][j];
}
}
}
// 找到每一列的最小值
for (int j = 0; j < n; ++j) {
for (int i = 0; i < m; ++i) {
if (matrix[i][j] < min_col[j] && matrix[i][j] != INT_MIN) {
min_col[j] = matrix[i][j];
}
}
}
// 检查是否存在鞍点
for (int i = 0; i < m; ++i) {
for (int j = 0; j < n; ++j) {
if (max_row[i] == matrix[i][j] && min_col[j] == matrix[i][j]) {
return true;
}
}
}
return false; // 如果遍历完都没有找到,返回false并输出"Not Found"
}
int main() {
int m, n;
cout << "Enter the dimensions of the matrix (m x n): ";
cin >> m >> n;
int matrix[m][n]; // 矩阵数组
cout << "Enter the elements of the matrix:\n";
for (int i = 0; i < m; ++i) {
for (int j = 0; j < n; ++j) {
cin >> matrix[i][j];
}
}
if (isHorsePoint(matrix, m, n)) {
// 鞍点存在,输出坐标
for (int i = 0; i < m; ++i) {
for (int j = 0; j < n; ++j) {
if (max_row[i] == matrix[i][j] && min_col[j] == matrix[i][j]) {
cout << "The horse point is at index (" << i << ", " << j << ").\n";
break;
}
}
if (max_row[i] == matrix[i][j]) {
break;
}
}
} else {
cout << "Not Found.\n";
}
return 0;
}
```
这个程序首先获取矩阵的尺寸和元素,然后检查每个元素是否同时满足行的最大值和列的最小值条件。如果是,它会打印出鞍点的坐标;如果不是,就会输出"Not Found"。
阅读全文