您的位置:首页 > 其它

hdu 1045 Fire Net (最爱 DFS)

2012-06-05 12:56 344 查看
// 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
[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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: