求助蛇形填数
  • 板块学术版
  • 楼主happybob
  • 当前回复0
  • 已保存回复0
  • 发布时间2021/3/21 12:33
  • 上次更新2023/11/5 01:47:40
查看原帖
求助蛇形填数
332914
happybob楼主2021/3/21 12:33

这个代码有什么不对了?60分(不是洛谷的)

#include <iostream>
using namespace std;

struct Node
{
	int x, y, k;
	bool t;
};

int n;
int ans[15][15];

void dfs(Node s)
{
	if (s.x == n && s.y == n)
	{
		return ;
	}
	s.k++;
	if (s.x == n && s.y == 1 && !(s.x & 1))
	{
		s.y++;
		s.t = !s.t;
		ans[s.x][s.y] = s.k;
		dfs(s);
	}
	else if ((s.y == 1 || s.y == n) && !(s.x & 1))
	{
		s.x++;
		s.t = !s.t;
		ans[s.x][s.y] = s.k;
		dfs(s);
	}
	else if ((s.x == 1 || s.x == n) && s.y & 1)
	{
		s.y++;
		s.t = !s.t;
		ans[s.x][s.y] = s.k;
		dfs(s);
	}
	else if (!s.t)
	{
		s.x++;
		s.y--;
		ans[s.x][s.y] = s.k;
		dfs(s);
	}
	else if (s.t)
	{
		s.x--;
		s.y++;
		ans[s.x][s.y] = s.k;
		dfs(s);
	}
}

int main()
{
	cin >> n;
	Node s;
	s.k = 1;
	s.x = s.y = 1;
	s.t = true;
	ans[1][1] = 1;
	dfs(s);
	for (register int i = 1; i <= n; i++)
	{
		for (register int j = 1; j <= n; j++)
		{
			cout << ans[i][j] << ' ';
		}
		cout << endl;
	}
	return 0;
}
2021/3/21 12:33
加载中...