/*
 * @Author: 莫春豪
 * @Date: 2022-12-17 15:51:45
 * @LastEditors: 莫春豪
 * @LastEditTime: 2023-07-06 20:24:12
 */
#include<bits/stdc++.h>
using namespace std;

int main()
{
    int n,m;
    while(cin >> n >> m)
    {
        int a[15][15]={0};
        for(int i = 0;i <= m + 1;i++)
        {
            a[0][i] = -1;//第0行
            a[n+1][i] = -1;//第n+1行
        }
        for(int i = 0;i <= n + 1;i++)
        {
            a[i][0] = -1;//第0列
            a[i][m + 1] = -1;//第m+1列
        }
        int x = 1,y = 1,f = 0;
        // f == 0 往右
        // f == 1 往下
        // f == 2 往左
        // f == 3 往上
        int k = 1;
        while(k <= n*m)
        {
            a[x][y] = k;
            k++;
            if(f == 0)
            {
                y++;
                if(a[x][y] != 0)//如果填过数了
                {
                    y--;//回退
                    x++;//转向
                    f = 1;
                }
            }
            else if(f == 1)
            {
                x++;
                if(a[x][y] != 0)
                {
                   x--;
                   y--;
                   f = 2;
                }
            }
            else if(f == 2)
            {
                y--;
                if(a[x][y] != 0)
                {
                   y++;
                   x--;
                   f = 3;
                }
            }
            else if(f == 3)
            {
                x--;
                if(a[x][y] != 0)
                {
                    x++;
                    y++;
                    f = 0;
                }
            } 
        }
        for(int i = 1;i <= n;i++)
        {
            for(int j = 1;j <= m;j++)
            {
                printf("%2d ",a[i][j]);
            }
            cout << endl;
        }
    }
    
    return 0;
}

0 条评论

目前还没有评论...