10 条题解

  • 0
    @ 2025-3-25 16:36:00
    #include<iostream>
    #include<vector>
    #include<iomanip>
    
    using namespace std;
    
    int main() {
        int m, n;
        int num = 1;
        int flag = 1;
        cin >> m >> n;
        int x = 0, y = n - 1;
    
        vector<vector<int>> arr(m, vector<int>(n, 0)); 
      
        for(int i = 0; i < m * n; i++)  {
            arr[x][y] = num++;
            if(flag == 1) {
                if(x < m - 1 && arr[x + 1][y] == 0) {
                    x++;
                } else {
                    flag = 2;
                    y--;
                }
            } else if(flag == 2) {
                if(y > 0 && arr[x][y - 1] == 0) {
                    y--;
                } else {
                    flag = 3;   
                    x--;
                }
            } else if(flag == 3 ) {
                if(x > 0 && arr[x - 1][y] == 0) {
                    x--;
                } else {
                    flag = 4;
                    y++;
                }
            } else if(flag == 4) {
                if(y < n - 1 && arr[x][y + 1] == 0) { 
                    y++;
                } else {
                    flag = 1;
                    x++;
                }
            }
            
        }
        for(int i = 0; i < m; i++) {
            for(int j = 0; j < n; j++) {
                printf("%5d", arr[i][j]);
            }
            cout << endl;
        }
        return 0;
    }
    

    信息

    ID
    78
    时间
    1000ms
    内存
    256MiB
    难度
    7
    标签
    递交数
    1257
    已通过
    327
    上传者