70分,TLE3个悬关求助
查看原帖
70分,TLE3个悬关求助
1041474
Zsy__rnfmabj楼主2023/7/18 08:59

如上

#include<bits/stdc++.h>
using namespace std;
int a[100],b2[100],b1[100],b3[100],n,ans=0;
bool f[1000][1000];
void dfs(int x)
{
	if(x>n)
	{
		ans++;
		return ;
	}
	for(int i=1;i<=n;i++)
	{
		if(b1[i]==0&&b2[x+i]==0&&b3[x-i+15]==0&&f[x][i]==0)
		{
			a[x]=i;
			b1[i]=1;
			b2[x+i]=1;
			b3[x-i+15]=1;
			dfs(x+1);
			b1[i]=0;
			b2[x+i]=0;
			b3[x-i+15]=0;
		}
	}
}
int main()
{
	cin>>n;
	char ch;
	/**/for(int i=1;i<=n;i++)
	{
		for(int j=1;j<=n;j++)
		{
			cin>>ch;
			if(ch=='.')
			{
				f[i][j]=1;
			}
		}
	}/**/
	dfs(1);
	cout<<ans;
	return 0;
}
2023/7/18 08:59
加载中...