社区讨论

为什么无法输入

P1562还是 N 皇后参与者 3已保存回复 6

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
6 条
当前快照
1 份
快照标识符
@lq6lqy62
此快照首次捕获于
2023/12/15 20:25
2 年前
此快照最后确认于
2023/12/15 22:15
2 年前
查看原帖
CPP
#include<bits/stdc++.h>
using namespace std;
int i, j, d[10], n, ans = 0;
char map[20][20];
bool check(int h, int dep){
	int i;
	for (i = 1; i < h; ++i){
		if (map[i][dep] == '.')return 0;
		if (d[i] == dep)return 0;
		if (dep - i > 0 && d[h - i] == dep - i)return 0;
		if (dep + i <= n && d[h - i] == dep + i)return 0; 
	} 
	return 1;
}
void dfs(int x){
	if (x == n + 1){
		ans++;
		return;
	}
	for (int i = 1; i <= n; ++i){
		if (check(x, i)){
			d[x] = i;
			dfs(x + 1);
		}
	}
}
int main(){
	cin >> n;
	for (int i = 1; i <= n; ++i){
		for (int j = 1; j <= n; ++j){
			cin >> map[i][j];
		}
	}
	dfs(1);
	cout << ans;
return 0;
} 

回复

6 条回复,欢迎继续交流。

正在加载回复...