10分求调,必关注
查看原帖
10分求调,必关注
1654113
cqbz_csp楼主2025/6/19 22:10
#include<iostream>
using namespace std;
int n,sum,b[14][14];
string a[14];
bool check(int x,int y){
	for (int i=0;i<n;i++){
		if (b[x][i])return false;
		if (b[i][y])return false;
	}
	for (int i=x-min(x,y),j=y-min(x,y);i<n&&y<n;i++,j++){
		if (b[i][j])return false;
	}
	for (int i=x+min(x,y),j=y-min(x,y);i>=0&&y<n;i--,j++){
		if (b[i][j])return false;
	}
	return true;
}
void dfs(int x){
	if (x==n){
		sum++;
		return ;
	}
	for (int i=0;i<n;i++){
		if (a[x][i]=='.'||!check(x,i))continue;
		b[x][i]=1;
		dfs(x+1);
		b[x][i]=0;
	}
}
int main(){
	cin>>n;
	for (int i=0;i<n;i++){
		cin>>a[i];
	}
	dfs(0);
	cout<<sum;
}
2025/6/19 22:10
加载中...