矩阵

Description

已知一个n*n(n<=100)的矩阵,把矩阵的主、次两条对角线的每个元素值加上x(运算保证在int范围内),然后输出矩阵。

Input

输入第一行为两正整数n,x。
接下来的n行,每行n个整数,整数间用空格隔开,表示矩阵元素的值。

Output

共n行,每行n个整数。每个整数之间用一空格隔开

Sample Input

3 4
1 2 3
1 2 3
1 2 3

Sample Output

5 2 7
1 6 3
5 2 7

python解法

# 读取输入
n, x = map(int, input().split())
matrix = []

# 读取矩阵
for _ in range(n):
    row = list(map(int, input().split()))
    matrix.append(row)

# 修改矩阵
for i in range(n):
    for j in range(n):
        # 检查是否在主对角线或次对角线上
        if i == j or i + j == n - 1:
            matrix[i][j] += x

# 输出修改后的矩阵
for row in matrix:
    print(' '.join(map(str, row)))

c++解法

#include<bits/stdc++.h>
using namespace std;

int main(){
    int n,x; // 定义两个整型变量n和x,分别用于存储矩阵的大小和要加到对角线上的值
    cin>>n>>x;
    // 定义一个二维数组a,其大小为n*n,用于存储矩阵的元素
    int a[n][n];
    // 读取矩阵的元素
    for(int i = 0; i < n; i++){ // 遍历矩阵的每一行
        for(int j = 0; j < n; j++){ // 遍历矩阵的每一列
            cin>>a[i][j]; // 读取元素并存储到矩阵中
        }
    }
    // 遍历矩阵,对主对角线和次对角线上的元素增加x
    for(int i = 0; i < n; i++){
        a[i][i] += x; // 主对角线
        if (i != n-1-i) { // 避免中心元素被重复处理
            a[i][n-1-i] += x; // 次对角线
        }
    }
    // 输出修改后的矩阵
    for(int i = 0; i < n; i++){
        for(int j = 0; j < n; j++){
            cout<<a[i][j]<<" ";
        }
        cout<<endl;
    }
    return 0;
}
如果您有更优的解法,欢迎在评论区一起交流噢~
阅读剩余
THE END