给你一个n * m 的矩阵,求这个矩阵的鞍点数量。 鞍点是这样一个元素:它是所在行最大值,且为所在列最小值。 Input 第一行两个数n m。 余下n行每行m个整数。 Output 一个非负整数,代表鞍点的数量。 Sample Input 2 2 10 9 -3 -10 Sample Output 1 HINT n, m <= 50。所有输入的数在int范围内。 c++
时间: 2024-04-15 15:31:03 浏览: 102
矩阵中寻找鞍点_C++_算法_矩阵鞍点算法_鞍点_
5星 · 资源好评率100%
您可以使用以下的C++代码来实现对矩阵鞍点数量的计算:
```cpp
#include <iostream>
#include <vector>
int main() {
int n, m;
std::cin >> n >> m;
std::vector<std::vector<int>> matrix(n, std::vector<int>(m));
// 读取矩阵元素
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
std::cin >> matrix[i][j];
}
}
int count = 0;
// 遍历每一行,找到鞍点
for (int i = 0; i < n; i++) {
int max_row = matrix[i][0]; // 当前行的最大值
int col_index = 0; // 最大值所在列的索引
// 找到当前行的最大值及其所在列的索引
for (int j = 1; j < m; j++) {
if (matrix[i][j] > max_row) {
max_row = matrix[i][j];
col_index = j;
}
}
bool is_saddle_point = true;
// 判断是否为鞍点
for (int k = 0; k < n; k++) {
if (matrix[k][col_index] < max_row) {
is_saddle_point = false;
break;
}
}
if (is_saddle_point) {
count++;
}
}
std::cout << count << std::endl;
return 0;
}
```
希望对您有所帮助!如有任何疑问,请随时提问。
阅读全文