【B2099】矩阵交换行 题解

· · 题解

题目分析

只需使用 for 输入矩阵后交换行并输出即可。

字符串解法

#include<bits/stdc++.h>
using namespace std;
string jz[5]={"","","","",""};//定义字符串数组 jz (题目中的矩阵的行)
int main(){
    for(int i = 0;i < 5;i ++)getline(cin,jz[i]);
    int a,b;cin>>a>>b;
    swap(jz[a-1],jz[b-1]);//使用STL函数 swap 交换
    for(int i = 0;i < 5;i ++)cout<<jz[i]<<endl;
    return 0;
}

二维数组解法 1

#include<bits/stdc++.h>
using namespace std;
int jz[5][5];//定义整型数组 jz (题目中的矩阵)
int main(){
    for(int i = 0;i < 5;i ++)for(int j = 0;j < 5;j ++)cin>>jz[i][j];
    int a,b;cin>>a>>b;
    swap(jz[a-1],jz[b-1]);//使用STL函数 swap 交换
    //这里 swap 是将一整个一维数组 jz[a-1] 与 jz[b-1] 进行了交换
    for(int i = 0;i < 5;i ++){for(int j = 0;j < 5;j ++)cout<<jz[i][j]<<' ';cout<<endl;}
    return 0;
}

二维数组解法 2(手打swap

#include<bits/stdc++.h>
using namespace std;
int jz[5][5];//定义整型数组 jz (题目中的矩阵)
int main(){
    for(int i = 0;i < 5;i ++)for(int j = 0;j < 5;j ++)cin>>jz[i][j];
    int a,b;cin>>a>>b;
    for(int i = 0;i < 5;i ++){int temp = jz[a-1][i];jz[a-1][i]=jz[b-1][i];jz[b-1][i]=temp;}//使用临时变量 temp 进行交换
    for(int i = 0;i < 5;i ++){for(int j = 0;j < 5;j ++)cout<<jz[i][j]<<' ';cout<<endl;}
    return 0;
}

UPD:

2021\7\4\14:47 :重新排版。

2021\7\4\15:35 :删除多余注释,加上空格,解释了二维数组解法 1 中 swap 的功能。