在N行M列的正整数矩阵中,要求从每行中选出1个数,使得选出的总共N个数的和最大。 已知1< =N< =10, 1< =M< =10的代码c++
时间: 2024-04-08 20:34:32 浏览: 153
以下是使用C++语言编写的代码,用于在N行M列的正整数矩阵中选择每行的一个数,使得选出的N个数的和最大。
```cpp
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main() {
int N, M;
cin >> N >> M;
vector<vector<int>> matrix(N, vector<int>(M));
// 输入矩阵
for (int i = 0; i < N; i++) {
for (int j = 0; j < M; j++) {
cin >> matrix[i][j];
}
}
// 选择每行最大的数并求和
int maxSum = 0;
for (int i = 0; i < N; i++) {
int maxNum = *max_element(matrix[i].begin(), matrix[i].end());
maxSum += maxNum;
}
cout << "选出的总和最大为:" << maxSum << endl;
return 0;
}
```
这段代码首先读取输入的N和M,然后创建一个大小为N行M列的矩阵。接下来,通过嵌套循环输入矩阵的每个元素。
然后,代码遍历每一行,使用`max_element`函数找到每行中的最大值,并将其累加到`maxSum`变量中。
最后,代码输出选出的总和最大值。
请注意,这只是一种简单的实现方式,可能不适用于特别大的矩阵。在实际应用中,可能需要根据具体情况进行优化。
阅读全文