hdu1045 Fire Net —— dfs

来源:互联网 发布:战地2 for mac 百度云 编辑:程序博客网 时间:2024/05/17 07:21

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1045


代码如下:

#include<cstdio>//hdu1045 dfs暴力搜#include<cstring>#define MAXN 6#define MAX(a,b) (a>b?a:b)using namespace std;int n, ans,set[MAXN][MAXN];char map[MAXN][MAXN];int safe(int x,int y){    for(int i = x-1; i>=1 && map[i][y]!='X'; i--) if(set[i][y]) return 0;    for(int i = x+1; i<=n && map[i][y]!='X'; i++) if(set[i][y]) return 0;    for(int i = y-1; i>=1 && map[x][i]!='X'; i--) if(set[x][i]) return 0;    for(int i = y+1; i<=n && map[x][i]!='X'; i++) if(set[x][i]) return 0;    return 1;}int dfs(int sum){    ans = MAX(ans,sum);    for(int i = 1; i<=n; i++)    for(int j = 1; j<=n; j++)    if( map[i][j] =='.' &&!set[i][j] && safe(i,j))    {        set[i][j] = 1;        dfs(sum+1);        set[i][j] = 0;    }}int main(){    while(scanf("%d",&n) && n)    {        for(int i = 1; i<=n; i++)            scanf("%s",map[i]+1);        ans = -1;        dfs(0);        printf("%d\n", ans);    }    return 0;}


0 0
原创粉丝点击