附上代码,大佬轻喷
#include <iostream>
#include <cstring>
using namespace std;
int s[10][10];
int n;
int t = 0;
void move(int x,int y,bool dir,int l)
{
if (t == pow(n, 2))return;
if (dir) {
t++;
s[x][y] = t;
if (x + l > n || x + l < 1 || s[x + l][y] != 0) { dir =0; move(x, y + l, dir, l); }
else move(x + l, y, dir, l);
}
else
{
t++;
s[x][y] = t;
if (y + l > n || y + l < 1 || s[x][y + l] != 0) { dir =1; l *= (-1); move(x + l, y, dir, l); }
else move(x, y + l, dir, l);
}
}
int main()
{
cin >> n;
move(1, 1,1,1);
for (int i = 1; i <= n; i++)
{
for (int j = 1; j <= n; j++)
{
printf("%3d", s[j][i]);
}
cout << endl;
}
return 0;
}