有毒
查看原帖
有毒
1075420
ZG10086楼主2024/3/9 18:21

感觉没有任何问题的代码:

#include<iostream>
using namespace std;
int a[210],ls[210],rs[210],n,ans=0;
int vis[210];
void dfs(int k)
{
	if(k>n)
	{
		if(ans<=2)
		{
			for(int i=1;i<=n;i++)
			{
				cout<<a[i]<<" ";
			}
			cout<<endl;
		}
		ans++;
		return ;
	}
	for(int i=1;i<=n;i++)
	{
		if(vis[i]||ls[i+k]||rs[i-k+1])
		{
			continue;
		}
		vis[i]=1;
		a[k]=i;
		ls[i+k]=1;
		rs[i-k+1]=1;
		dfs(k+1);
		a[k]=0;
		vis[i]=0;
		ls[i+k]=0;
		rs[i-k+1]=0;
	}
}
int main()
{
	cin>>n;
	dfs(1);
	cout<<ans;
	return 0;
}
2024/3/9 18:21
加载中...