51nod 2486 小b和矩阵

小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]);
        }
    }
}

猜你喜欢

转载自www.cnblogs.com/8023spz/p/10803827.html