矩阵交换行

GitHub跳转原题关系图返回列表

读取 5x5 矩阵后直接交换两个列表行,再逐行输出。

OJ: noi_openjudge

题目 ID: ch0108-01

难度:入门

标签:矩阵模拟python

日期: 2026-07-30 23:01

题意

交换 5×55\times5 矩阵中指定的两行并输出矩阵。

思路

矩阵的每一行可表示为一个列表,两个列表可用并行赋值直接交换。题目行号从 11 开始,列表下标需减一。

代码

cpp
#include <cstdio>

int a[10][10];

int main(){
    int i,j;

    for (i=1;i<=5;i++){
        for (j=1;j<=5;j++){
            scanf("%d",&a[i][j]);
        }
    }
    int t1,t2;
    scanf("%d%d",&t1,&t2);
    for (i=1;i<=5;i++){
        int t;
        t = a[t1][i];
        a[t1][i] = a[t2][i];
        a[t2][i] = t;
    }

    for (i=1;i<=5;i++){
        for (j=1;j<=5;j++){
            printf("%d ",a[i][j]);
        }
        printf("\n");
    }
    return 0;
}

复杂度

总结

Python代码

python
matrix = [input().split() for _ in range(5)]
first_row, second_row = map(int, input().split())
matrix[first_row - 1], matrix[second_row - 1] = matrix[second_row - 1], matrix[first_row - 1]

for row in matrix:
    print(*row)

C++代码

cpp
#include <cstdio>

int a[10][10];

int main(){
    int i,j;

    for (i=1;i<=5;i++){
        for (j=1;j<=5;j++){
            scanf("%d",&a[i][j]);
        }
    }
    int t1,t2;
    scanf("%d%d",&t1,&t2);
    for (i=1;i<=5;i++){
        int t;
        t = a[t1][i];
        a[t1][i] = a[t2][i];
        a[t2][i] = t;
    }

    for (i=1;i<=5;i++){
        for (j=1;j<=5;j++){
            printf("%d ",a[i][j]);
        }
        printf("\n");
    }
    return 0;
}

复杂度

矩阵规模固定,时间和额外空间复杂度均为 O(1)O(1)

总结

Python 中交换两行不必逐元素交换,直接交换对应列表即可。