C++全代码:在矩阵中,一个元素在所在行是最大值,在所在列是最小值,则被称为鞍点。输入两个正整数m和n(m,n<=10),然后输入该m行n列矩阵中的元素,如果找到矩阵的鞍点(题目输入的数据保证保证最多只有一个鞍点),则输出其下标,否则输出“Not Found”。
时间: 2024-12-22 22:28:37 浏览: 9
在C++中,你可以通过遍历整个矩阵并维护每个元素所在的行最小值和列最大值来进行鞍点查找。以下是一个简单的全代码实现:
```cpp
#include <iostream>
#include <vector>
std::pair<int, int> findHorseRace(std::vector<std::vector<int>>& matrix) {
int m = matrix.size();
int n = matrix[0].size();
// 初始化行最小值和列最大值
std::vector<int> row_min(m, INT_MAX), col_max(n, INT_MIN);
int min_row = -1, max_col = -1;
for (int i = 0; i < m; ++i) {
for (int j = 0; j < n; ++j) {
// 更新行最小值和列最大值
if (matrix[i][j] < row_min[i]) {
row_min[i] = matrix[i][j];
}
if (matrix[i][j] > col_max[j]) {
col_max[j] = matrix[i][j];
}
// 检查当前元素是否是鞍点
if (row_min[i] == matrix[i][j] && col_max[j] == matrix[i][j]) {
min_row = i;
max_col = j;
}
}
}
// 如果找到了鞍点,返回其下标;否则返回"Not Found"
if (min_row != -1 && max_col != -1) {
return {min_row, max_col};
} else {
return {"Not Found"};
}
}
int main() {
int m, n;
std::cout << "Enter the number of rows and columns (m, n): ";
std::cin >> m >> n;
std::vector<std::vector<int>> matrix(m, std::vector<int>(n));
std::cout << "Enter the elements of the matrix:\n";
for (int i = 0; i < m; ++i) {
for (int j = 0; j < n; ++j) {
std::cin >> matrix[i][j];
}
}
auto result = findHorseRace(matrix);
std::cout << "Result: (" << result.first << ", " << result.second << ")";
return 0;
}
```
在这个代码中,`findHorseRace`函数接收一个二维向量作为矩阵,它首先初始化行最小值和列最大值,然后遍历矩阵更新这些值。当发现一个元素同时是最小行值和最大列值时,就找到了鞍点。最后在`main`函数中获取用户输入,并调用这个函数。
阅读全文