萌新刚学 OI 刷入门题 求助
查看原帖
萌新刚学 OI 刷入门题 求助
274993
Maxmilite楼主2020/12/13 21:04

萌新刚学 oioi

dfsdfs 过掉了这道题

请问大佬们在关闭题解的情况下有什么分享新做法的方法吗 /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;
}
2020/12/13 21:04
加载中...