小b有一个m行n列的矩阵。
她会从(1,1)开始,顺时针螺旋访问该矩阵,每个元素恰好被访问一次。
请你按小b的访问顺序输出每个元素。
输入
第一行输入两个数m和n,其中0<m,n≤500; 之后m行,每行n个数以空格隔开,表示这个矩阵。
输出
输出一行共m*n个数,表示螺旋输出的结果
输入样例
3 4
1 2 3 4
5 6 7 8
9 10 11 12
输出样例
1 2 3 4 8 12 11 10 9 5 6 7
注意判断即可。
代码:
#include <iostream> #include <cstdlib> #include <cstdio> using namespace std; int mp[502][502]; int main() { int n,m,flag = 0; scanf("%d%d",&n,&m); for(int i = 0;i < n;i ++) { for(int j = 0;j < m;j ++) { scanf("%d",&mp[i][j]); } } for(int i = 0;i * 2 < n && i * 2 < m;i ++) { for(int j = i;j < m - i;j ++) { if(flag) putchar(' '); else flag ++; printf("%d",mp[i][j]); } for(int j = i + 1;j < n - i;j ++) { printf(" %d",mp[j][m - i - 1]); } if(n - i - 1 > i) for(int j = m - i - 2;j >= i;j --) { printf(" %d",mp[n - i - 1][j]); } if(i < m - i - 1) for(int j = n - i - 2;j > i;j --) { printf(" %d",mp[j][i]); } } }