70pt
查看原帖
70pt
317400
Foggy_night楼主2022/11/27 08:52
#include<iostream>
using namespace std;
bool c[55],l[55],f[55];
int ans;
int n;
char ch[15][15];
void queen(int x){
	if(x == n+1){//符合条件 
		ans++;
		return;
	}
	
	for(int j = 1; j <= n; j++)
		if(!c[j] && !l[x-j+n] && !f[x+j] && ch[x][j] == '*')//保证与之前的皇后没有冲突 
		{
			c[j] = l[x-j+n] = f[x+j] = true; 
			queen(x+1);//搜索下一个 
			c[j] = l[x-j+n] = f[x+j] = false;
		}
}
int main(){
	cin >> n;
	for(int i = 0; i < n; i++)
		for(int j = 0; j < n; j++)
			cin >> ch[i][j];
	queen(1);
	cout << ans;
	return 0;
}
2022/11/27 08:52
加载中...