题目描述
问题描述:
定义一个N*M(N,M<=100)的矩阵,将一个该矩阵的行和列的元素互换,存到另一个二维数组中。
输入格式:
一行两个整数,N,M,中间用空格隔开,表示矩阵有N行,M列
接下来共N行M列表示矩阵
输出格式:
输出转置以后的矩阵,矩阵中元素用空格隔开
输入样例1:
2 3
1 2 3
4 5 6
输出样例1:
1 4
2 5
3 6
思想:
题目说:“将一个该矩阵的行和列的元素互换,存到另一个二维数组中”,意思其实就是说新建一个二维数组,用来存放倒过来的原矩阵。
But,我们不用这个方法,我们直接用原数组来更新倒过来的数组,通过仔细的观察,发现原本输入的N行M列的矩阵变成了M行N列的新矩阵。
由此,我们得出了以下的代码:
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
cin>>c[i][j];//输入N行M列的矩阵
}
}
for(int i=1;i<=m;i++){
for(int j=1;j<=n;j++){
cout<<c[j][i]<<" ";//输出M行N列的新矩阵
}
cout<<endl;
}
AC代码:
#include<bits/stdc++.h>
using namespace std;
int c[10000][10000];
int main(){
int n,m;
cin>>n>>m;
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
cin>>c[i][j];//输入N行M列的矩阵
}
}
for(int i=1;i<=m;i++){
for(int j=1;j<=n;j++){
cout<<c[j][i]<<" ";//输出M行N列的新矩阵
}
cout<<endl;
}
return 0;
}