对于一个n行m列的矩阵,将其每一行的最大值依次排列在一起,称为该矩阵行的水位线;将其每一列的最大值依次排列在一起,称为该矩阵的列的水位线。 请计算给定的矩阵的行和列的水位线。c++
时间: 2024-02-28 20:55:15 浏览: 93
求矩阵行最大值
好的,以下是一个 C++ 代码示例,可以计算给定矩阵的行和列的水位线:
```c++
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
vector<int> row_waterline(vector<vector<int>> matrix) {
vector<int> row_max;
for (vector<int> row : matrix) {
int max_val = *max_element(row.begin(), row.end()); // 计算每行的最大值
row_max.push_back(max_val);
}
sort(row_max.begin(), row_max.end()); // 对每行最大值排序
return row_max;
}
vector<int> col_waterline(vector<vector<int>> matrix) {
vector<int> col_max;
int m = matrix[0].size();
for (int i = 0; i < m; i++) {
int max_val = 0;
for (vector<int> row : matrix) {
max_val = max(max_val, row[i]); // 计算每列的最大值
}
col_max.push_back(max_val);
}
sort(col_max.begin(), col_max.end()); // 对每列最大值排序
return col_max;
}
int main() {
vector<vector<int>> matrix = {
{1, 2, 3},
{4, 5, 6},
{7, 8, 9}
};
vector<int> row_levels = row_waterline(matrix); // 计算行的水位线
vector<int> col_levels = col_waterline(matrix); // 计算列的水位线
cout << "Row waterline: ";
for (int val : row_levels) {
cout << val << " ";
}
cout << endl;
cout << "Col waterline: ";
for (int val : col_levels) {
cout << val << " ";
}
cout << endl;
return 0;
}
```
输出结果:
```
Row waterline: 3 6 9
Col waterline: 7 8 9
```
注意,这里假设矩阵中的元素都是整型。如果矩阵中的元素是字符串或其他类型,需要根据实际情况进行修改。
阅读全文