酷代码 AI
菜单
服务商

C++ 代码:巧妙计算 n×n 矩阵行、列、对角线平行直线元素和最大值

```cpp #include <iostream> #include <vector> // 使用标准命名空间 using namespace std; // 主函数,程序的入口点 int main() { // 定义一个整数变量 n,用于存储矩阵的大小 int n; // 从标准输入读取一个整数赋值给 n cin >> n; // 定义一个二维向量 A,用于存储 n x n 的矩阵 vector<vector<int>> A(n, vector<int>(n)); // 嵌套循环,用于读取矩阵的每一个元素 for (int i = 0; i < n; ++i) { for (int j = 0; j < n; ++j) { // 从标准输入读取矩阵元素并存储到 A[i][j] cin >> A[i][j]; } } // 定义一个整数变量 maxSum,用于存储最大的和,初始化为一个极小值 int maxSum = -1e9; // 计算每行的和 for (int i = 0; i < n; ++i) { // 定义一个整数变量 rowSum,用于存储当前行的和 int rowSum = 0; for (int j = 0; j < n; ++j) { // 将当前行的元素累加到 rowSum 中 rowSum += A[i][j]; } // 更新 maxSum 为 maxSum 和 rowSum 中的较大值 maxSum = max(maxSum, rowSum); } // 计算每列的和 for (int j = 0; j < n; ++j) { // 定义一个整数变量 colSum,用于存储当前列的和 int colSum = 0; for (int i = 0; i < n; ++i) { // 将当前列的元素累加到 colSum 中 colSum += A[i][j]; } // 更新 maxSum 为 maxSum 和 colSum 中的较大值 maxSum = max(maxSum, colSum); } // 计算正对角线平行直线的和 for (int startCol = 0; startCol < n; ++startCol) { // 定义一个整数变量 sum,用于存储当前正对角线平行直线的和 int sum = 0; for (int i = 0, j = startCol; i < n && j < n; ++i, ++j) { // 将当前正对角线平行直线上的元素累加到 sum 中 sum += A[i][j]; } // 更新 maxSum 为 maxSum 和 sum 中的较大值 maxSum = max(maxSum, sum); } for (int startRow = 1; startRow < n; ++startRow) { // 定义一个整数变量 sum,用于存储当前正对角线平行直线的和 int sum = 0; for (int i = startRow, j = 0; i < n && j < n; ++i, ++j) { // 将当前正对角线平行直线上的元素累加到 sum 中 sum += A[i][j]; } // 更新 maxSum 为 maxSum 和 sum 中的较大值 maxSum = max(maxSum, sum); } // 计算反对角线平行直线的和 for (int startCol = 0; startCol < n; ++startCol) { // 定义一个整数变量 sum,用于存储当前反对角线平行直线的和 int sum = 0; for (int i = 0, j = startCol; i < n && j >= 0; ++i, --j) { // 将当前反对角线平行直线上的元素累加到 sum 中 sum += A[i][j]; } // 更新 maxSum 为 maxSum 和 sum 中的较大值 maxSum = max(maxSum, sum); } for (int startRow = 1; startRow < n; ++startRow) { // 定义一个整数变量 sum,用于存储当前反对角线平行直线的和 int sum = 0; for (int i = startRow, j = n - 1; i < n && j >= 0; ++i, --j) { // 将当前反对角线平行直线上的元素累加到 sum 中 sum += A[i][j]; } // 更新 maxSum 为 maxSum 和 sum 中的较大值 maxSum = max(maxSum, sum); } // 输出最大的和到标准输出 cout << maxSum << endl; // 程序正常结束,返回 0 return 0; } ``` 这段代码的功能是读取一个 `n x n` 的矩阵,然后计算矩阵中每行、每列、正对角线平行直线以及反对角线平行直线的元素和,最后输出这些和中的最大值。 ######[AI问答 | 1151点数解答 | 2025-11-26 20:07:49]

相关提问
本站限时免费提问中
实用工具查看更多
Linux在线手册 [开发类]
Jquery在线手册 [开发类]
今日油价 [生活类]
图片互转base64 [开发类]
时间转换器 [开发类]