最近学到二维数组,遇到了矩阵螺旋输出的练习题
记录一下
#include <iostream>
using namespace std;
int main() {
int matrix[100][100];
int m;
int n;
int j;
int i;
while(1) {
cin >> m;
cin >> n;
for (i = 0; i<m; i++) {
for (j = 0; j<n; j++) {
cin >> matrix[i][j];
}
}
int a = m;
int b = n;
int x = 0;
int flag = 0;
while (m >= 2 && n >= 2) {
//输出上面的x行
for (i = x; i < m; i++) {
for (j = x; j < n ;j++) {
cout << matrix[i][j];// << " ";
flag++;
if (flag < a * b)
cout << " ";
// if ( (n == 3) && (m >= 3) && (j == x) )
// continue;
// else
// cout << " ";
}
break;
}
//输出右边的y列
for (j = n - 1; j >= x; j--) {
for (i = x + 1; i < m; i++) {
cout << matrix[i][j];// << " ";
flag++;
if (flag < a * b)
cout << " ";
// if ( (n == 3) && (m >= 4) && (i == m - 1) )
// continue;
// else
// cout << " ";
}
break;
}
//输出下面的x行
for (i = m - 1; i > x; i--) {
for (j = n - 2; j >= x; j--) {
cout << matrix[i][j]; // << " ";
flag++;
if (flag < a * b)
cout << " ";
// if ( (m == 3) && (n >= 2) && (j == x) )
// continue;
// else
// cout << " ";
}
break;
}
//输出左边的y列
for (j = x; j < n; j++) {
for (i = m - 2; i >= x + 1; i--) {
cout << matrix[i][j];// << " ";
flag++;
if (flag < a * b)
cout << " ";
// if ( () )
}
break;
}
//去除已经输出的最外层
m--;
n--;
//去除最外层之后,需要将x++
x++;
}
}
return 0;
}