1126:矩阵转置
时间限制: 1000 ms 内存限制: 65536 KB
提交数: 35838 通过数: 16627
【题目描述】
输入一个n行m列的矩阵A,输出它的转置AT。
【输入】
第一行包含两个整数n和m,表示矩阵A的行数和列数(1<=n<=100,1<=m<=100)。
接下来n行,每行m个整数,表示矩阵A的元素。相邻两个整数之间用单个空格隔开,每个元素均在1~1000之间。
【输出】
m行,每行n个整数,为矩阵A的转置。相邻两个整数之间用单个空格隔开。
【分析】就是将整个矩阵转九十度,仔细一看就会发现转置前后i和j的关系是刚好相反的。
#include<iostream>
using std::cin;
using std::cout;
using std::endl;
//#include<iomanip>
//using std::fixed;
//using std::setprecision;
//#include<algorithm>
//using std::swap;
int main()
{
int n, m;
cin >> n >> m ;
//int(* a)[100] = new int[100][100];
//int(*b)[100] = new int[100][100];
int c[100][100] = { 0 };
int d[100][100] = { 0 };
for (int i = 0; i < n; ++i)
{
for (int j = 0; j < m; ++j)
{
cin >> c[i][j];
}
}
for (int i = 0; i < n; ++i)
{
for (int j = 0; j < m; ++j)
{
d[j][i] = c[i][j];
}
}
for (int i = 0; i < m; ++i)
{
for (int j = 0; j < n; ++j)
{
cout << d[i][j] << " ";
}
cout << endl;
}
}