大模拟

#include <stdio.h>
#define INF 10005

int main()
{
    freopen("1.out","w+",stdout);
    int matrix[100][100];
    int m;
    int n;
    scanf("%d%d", &m, &n);
    for (int i = 0; i < m; i++)
    {
        for (int j = 0; j < n; j++)
        {
            scanf("%d", &matrix[i][j]);
        }
    }
    int i = 0, j = 0;
    int  dir = 0; // 0 right, 1 down, 2 left, 3 up
    while (matrix[i][j] != INF
        || (i-1>=0 && matrix[i-1][j]!=INF)
        || (i+1<m && matrix[i+1][j]!=INF)
        || (j-1>=0 && matrix[i][j-1]!=INF)
        || (j+1<n && matrix[i][j+1]!=INF ))
    {
        switch (dir)
        {
        case 0: // right
            for (; j < n && matrix[i][j] != INF; j++)
            {
                printf("%d", matrix[i][j]);
                matrix[i][j] = INF;
                if (j+1 < n && matrix[i][j+1]!=INF) // j+1 < n && matrix[i][j+1]!=INF
                {
                    printf(" ");
                }
            }
            dir = 1;
            j--;
            if (i+1<m && matrix[i+1][j]!=INF) // i+1<m && matrix[i+1][j]!=INF
            {
                printf(" ");
            }
            i++;
            break;
        case 1: // down
            for (; i < m && matrix[i][j] != INF; i++)
            {
                printf("%d", matrix[i][j]);
                matrix[i][j] = INF;
                if (i+1<m&&matrix[i+1][j]!=INF)//i+1<m&&matrix[i+1][j]!=INF
                {
                    printf(" ");
                }
            }
            dir = 2;
            i--;
            if (j-1>=0 && matrix[i][j-1]!=INF) // j-1>=0 && matrix[i][j-1]!=INF
            {
                printf(" ");
            }
            j--;
            break;
        case 2: // left
            for (; j >= 0 && matrix[i][j] != INF; j--)
            {
                printf("%d", matrix[i][j]);
                matrix[i][j] = INF;
                if (j-1>=0 && matrix[i][j-1] !=INF) //j-1>=0 && matrix[i][j-1] !=INF
                {
                    printf(" ");
                }
            }
            dir = 3;
            j++;
            if (i-1>=0 && matrix[i-1][j]!=INF) // i-1>=0 && matrix[i-1][j]!=INF
            {
                printf(" ");
            }
            i--;
            break;
        case 3: // up
            for (; i >= 0 && matrix[i][j] != INF; i--)
            {
                printf("%d", matrix[i][j]);
                matrix[i][j] = INF;
                if (i-1>=0 && matrix[i-1][j]!=INF) // i-1>=0 && matrix[i-1][j]!=INF
                {
                    printf(" ");
                }
            }
            dir = 0;
            i++;
            if (j+1<n && matrix[i][j+1]!=INF)//j+1<n && matrix[i][j+1]!=INF
            {
                printf(" ");
            }
            j++;
            break;
        default:
            break;
        }
    }
    return 0;
}

标签: none

添加新评论