最后一个测试点在devc++上输出是对的,但是过不了,关了O2也不行
查看原帖
最后一个测试点在devc++上输出是对的,但是过不了,关了O2也不行
1348292
Joseph__9楼主2024/5/21 20:36
#include <bits/stdc++.h>
using namespace std;

const int N = 20;
int col[N],dg[N],udg[N],g[N];
long long cnt,n;

void dfs(int u)
{
	if(u == n+1)
	{
		if(cnt < 3)
		{
			for(int i = 1;i <= n;i++) cout << g[i] << " ";
			cout << endl;
		}
		cnt++;
		return;
	}
	for(int i = 1;i <= n;i++)
	{
		if(!col[i] && !dg[u+i] && !udg[n-u+i])
		{
			g[u] = i;
			col[i] = dg[u+i] = udg[n-u+i] = true;
			dfs(u+1);
			col[i] = dg[u+i] = udg[n-u+i] = false;
		}
	}
	
}
int main()
{
	cin >> n;
	dfs(1);
	cout << cnt;
}
2024/5/21 20:36
加载中...