// 2012-06-05
// hdu 1045 让我想起了炸弹超人和八皇后 貌似有点意思 -- 最爱的深搜 aclay
#include <iostream>
#include <cstring>
#include <cstdio>
#include <string>
#include <algorithm>
#define Bug cout << "here\n";
using namespace std;
const int N = 4;
char str[N][5];
int n, mmax;
bool ok(int x, int y) {
if(str[x][y] != '.') return false;
int i;
for(i = y-1; i >= 0; i--) {
if(str[x][i] == 'X') {
break;
}
else if(str[x][i] == 'B') {
return false;
}
}
for(i = x-1; i >= 0; i--) {
if(str[i][y] == 'X') {
break;
}
else if(str[i][y] == 'B') {
return false;
}
}
return true;
}
void dfs(int pos, int num) { // 一定要先写出口
if(pos == n*n) {
if(num > mmax) {
mmax = num;
}
return;
}
int x = pos / n;
int y = pos % n;
if(ok(x, y)) {
str[x][y] = 'B';
dfs(pos+1, num+1);
str[x][y] = '.';
}
dfs(pos+1, num);
}
int main() {
int i;
while(scanf("%d", &n), n) {
for(i = 0; i < n; i++) {
scanf("%s", str[i]);
}
mmax = -1;
dfs(0, 0);
printf("%d\n", mmax);
}
return 0;
}
hdu 1045 Fire Net (最爱 DFS)
最新推荐文章于 2017-10-29 11:08:57 发布