10pts求助
查看原帖
10pts求助
1409511
EverNight37楼主2024/8/14 20:29
#include<bits/stdc++.h>
using namespace std;
char c1;
int n, ans, a[20][20], b[30], c[30], used[20];
void dfs(int x) {
	if(x == n + 1) {
		ans ++;
		return ;
	}
	for(int i = 1;i <= n;i ++) {
		if(used[i] == 0 && b[i + x] == 0 && b[i - x + n] == 0 && a[x][i] == 0) {
			used[i] = 1;
			b[i + x] = 1;
			c[i - x + n] = 1;
			dfs(x + 1);
			used[i] = 0;
			b[i + x] = 0;
			c[i - x + n] = 0;
		}
	}
}
int main() {
	cin >> n;
	for(int i = 1;i <= n;i ++) {
		for(int j = 1;j <= n;j ++) {
			cin >> c1;
			if(c1 == '.') a[i][j] = 1;
		}
	}
	dfs(1);
	cout << ans;
	return 0; 
}

记录详情

2024/8/14 20:29
加载中...