题目要求将给定的矩阵顺时针旋转90度后输出。
总时间限制: 1000ms 内存限制: 65536kB
给定一个n*n的矩阵,求出该矩阵顺时针旋转90度后的矩阵。
第一行为矩阵的数量M(1<=M<=100),其后每个矩阵数据的第一行是该矩阵的行数(行数=列数)n(1<=n<=100),后面跟着n行数据,每行是矩阵在该行的列数据,数字间由空格隔开。
输出N个矩阵,每个矩阵由若干行构成,每行代表矩阵当前行的列数据,数字间由空格隔开,每行最后一个数字后面不输出空格。
1
2
1 2
3 4
3 1
4 2
题目没有要求对旋转后的矩阵进行后续处理,因此可以变换输出下标的顺序进行输出即可。
#include <iostream>
using namespace std;
int main() {
int m, i, n, j ,k;
cin >> m;
for (i = 0; i < m; ++i) {
cin >> n;
int **data = new int*[n];
for (j = 0; j < n; ++j) {
data[j] = new int[n];
for (k = 0; k < n; ++k) {
cin >> data[j][k];
}
}
for (k = 0; k < n; k++) {
for (j = n - 1; j >= 0; --j) {
cout << data[j][k];
if (j > 0) {
cout << " ";
}
}
cout << endl;
}
for (j = 0; j < n; ++j) {
delete[] data[j];
}
delete[] data;
}
return 0;
}
4075.cpp 代码长度:505B 内存:136kB 时间:2ms 通过率:91% 最小内存:136kB 最短时间:0ms
给定的矩阵都是方阵,由于事先不知道矩阵的大小,因此需要采用动态内存分配的方式,最后注意释放内存。
有任何的改进意见欢迎大家在微信平台公众号主页面留言或者发表issue。