萌新刚学 oi
用 dfs 过掉了这道题
请问大佬们在关闭题解的情况下有什么分享新做法的方法吗 /kk
#include <stdio.h>
int dir = 1, n;
int a[15][15];
int dx[] = {0, 0, 1, 0, -1};
int dy[] = {0, 1, 0, -1, 0};
void change_dir ()
{
if (dir == 4)
dir = 1;
else
++dir;
}
void dfs (int x, int y, int cnt)
{
if (cnt > n * n)
return;
a[x][y] = cnt;
if (x + dx[dir] > n || x + dx[dir] < 1 || y + dy[dir] > n || y + dy[dir] < 1 || a[x + dx[dir]][y + dy[dir]])
change_dir ();
dfs (x + dx[dir], y + dy[dir], cnt + 1);
}
int main()
{
scanf ("%d", &n);
dfs (1, 1, 1);
for (int i = 1; i <= n; ++i)
{
for (int j = 1; j <= n; ++j)
printf ("%3d", a[i][j]);
printf ("\n");
}
return 0;
}