真的不知道错在哪里了
查看原帖
真的不知道错在哪里了
1005994
TiAm0楼主2023/7/13 16:10

#include<stdio.h>

int main() {
int q[85][85]={0};
int n;
    scanf("%d", &n);//输入长宽
    int dx[] = { -1,0,1,0 }, dy[] = { 0,1,0,-1 };//偏移量数组
    int x = 0, y = 0, d = 1;
    for (int i = 1; i <= n * n; i++) {
        q[x][y] = i;
        int a = x + dx[d], b = y + dy[d];
        if (a < 0 || a >= n || b < 0 || b >= n || q[a][b]) {//a,b为了预测下一步是否符合限制
            d = (d + 1) % 4;
            a = x + dx[d], b = y + dy[d];//x,y才是真正的坐标
        }
        x = a, y = b;
    }
    for (int i = 0; i < n; i++) {
        for (int j = 0; j < n; j++) {
            printf("%2d ", q[i][j]);
        }
        printf("\n");
    }
    return 0;
}
2023/7/13 16:10
加载中...