Run ID:109341
提交时间:2025-02-08 11:00:54
#include <bits/stdc++.h> using namespace std; int a[105][105]; int main() { int N; cin >> N; int x = 0, y = N; // 起始点 // 下 +1,+0 // 左 +0,-1 // 上 -1,+0 // 右 +0,+1 int i = 1; // 定义i:第一个数 int i = N * N; int f = 0; // 方向 //int a[4] = {1, 0, -1, 0}; int b[4][2] = {{1, 0}, {0, -1}, {-1, 0}, {0, 1}}; while(i <= N * N) // 终止条件:填的最后一个数 while(i >= 1) { int X = x + b[f][0]; int Y = y + b[f][1]; //cout << f << ' ' << b[f][0] << ' ' << b[f][1] << endl; //cout << X << ' ' << Y << endl; if(X < 1 || X > N || Y < 1 || Y > N || a[X][Y] != 0){ /*f = f + 1; if(f == 4) f = 0;*/ f = (f + 1) % 4; continue; } a[X][Y] = i; x = X; y = Y; i = i + 1; //数不断变大 i = i - 1; } //没有进入下面的2重循环 for(int i = 1; i <= N; ++i){ for(int j = 1; j <= N; ++j){ cout << a[i][j] << ' '; } cout << '\n'; } return 0; }