逻辑判断
查看原帖
逻辑判断
1751052
unlucking楼主2025/6/21 09:04
#include <iostream>
#include <vector>
using namespace std;

int main() {
    int n;
    cin >> n;
    vector<vector<int>> arr(n, vector<int>(n, 0));
    int r = 0, c = 0;
    int d = 0;
    //int e_up = 0,e_d = n - 1,e_l = 0,e_r = n -1;
    for (int i = 1; i <= n * n; i++) {
        arr[r][c] = i;  // 赋值当前单元格
        if(d == 0 && c + 1 < n && arr[r][c + 1] == 0){
            c++;
        }
        else if(d == 1 && r + 1 < n && arr[r + 1][c] == 0)
            r++;
        else if(d == 2 && c - 1 >= 0 && arr[r][c - 1] == 0)
            c--;
        else if(d == 3 && r - 1 >= 0 && arr[r - 1][c] == 0){
            r--;
        }else{
            d = (d + 1) %4;//下面在写一遍,因为拐角的数会被覆盖;
             if(d == 0 && c + 1 < n && arr[r][c + 1] == 0){
            c++;
        }
        else if(d == 1 && r + 1 < n && arr[r + 1][c] == 0)
            r++;
        else if(d == 2 && c - 1 >= 0 && arr[r][c - 1] == 0)
            c--;
        else if(d == 3 && r - 1 >= 0 && arr[r - 1][c] == 0){
            r--;
        }
        }
    }
    // 打印矩阵
    for (int i = 0; i < n; i++) {
        for (int j = 0; j < n; j++) {
            int x = arr[i][j];
            if(x >= 10){
                cout <<" "<< x;
            }else{
                cout << "  "<< x;
            }
        }
        cout << endl;
    }
    return 0;
}
2025/6/21 09:04
加载中...