最后一个点TLE
查看原帖
最后一个点TLE
933338
lijunda楼主2024/3/7 20:26
#include<bits/stdc++.h>
using namespace std;
int visx[100];
int visy[100];
int n;
int ans=0,flag=0;

void dfs(int tot)
{
	if(tot==n)
	{
		ans++;
		if(flag<3)
		{
			flag++;
			for(int i=1;i<=n;i++)
			{
				cout<<visy[i]<<" ";
			}
			cout<<endl;
		}
		return;
	}
	int i=tot+1;
	for(int j=1;j<=n;j++)
	{
		int f=0;
		for(int k=1;k<=tot;k++)
		{
			if(i==visx[k]||j==visy[k]||abs(i-visx[k])==abs(j-visy[k]))
			{
				f=1;
				break;
			}
		}
		if(f==0)
		{
			visx[tot+1]=i;
			visy[tot+1]=j;
			tot++; 
			dfs(tot);
			tot--;
			visx[tot+1]=0;
			visy[tot+1]=0;	
		} 
	}
}

int main()
{
	cin>>n;
	for(int i=1;i<=n;i++)
	{
		for(int j=1;j<=n;j++)
		{
			visx[1]=i,visy[1]=j;
			dfs(1);
			visx[1]=0,visy[1]=0;
		}
	}
	cout<<ans;
} 
2024/3/7 20:26
加载中...