矩阵左转
时间限制1s
内存限制128MB
题目描述
输入一个N*M的矩阵,要求将这个矩阵向左旋转90度后输出
比如现在有矩阵 :
1 2 3
4 5 6
向左旋转90度后的矩阵变为:
3 6
2 5
1 4
输入
第一行输入T表示有T个测试实例
第二行输入矩阵维度N和M,表示N行和M列
第三行起输入矩阵数据,矩阵数据用自然数表示
下面依次类推
输出
输出左转90度的矩阵
注意每行最后一个数据不带空格,直接换行
#include <iostream>
using namespace std;
int main() {
int t;
cin >> t;
int n, m, j, k;
int a[n][m];
while (t--) {
cin >> n >> m;
for (j = 0; j < n; j++) {
for (k = 0; k < m; k++) {
cin >> a[j][k];
}
}
for (k = m - 1; k >= 0; k--) {
cout<<a[0][k];
for (j = 1; j < n;j++) {
cout<<' '<<a[j][k];}
cout<<endl;
}
}
}
错误的代码:
#include <iostream>
using namespace std;
int main() {
int t;
cin >> t;
int n, m, j, k;
int a[n][m];
while (t--) {
cin >> n >> m;
for (j = 0; j < n; j++) {
for (k = 0; k < m; k++) {
cin >> a[j][k];
}
}
for (k = m - 1; k >= 0; k--) {
cout<<a[0][k];
for (j = 1; j < n;j++) {
cout<<' '<<a[j][k];}
cout<<endl;
}
}
}
这样就是错的 ,会提示溢出...
提示sigsegv 存在内存分配失败的情况。
对于数组规模,一定要已知才能定义这个数组。