HDU-1045-Fire Net

来源:互联网 发布:淘宝新开的店铺发货慢 编辑:程序博客网 时间:2024/05/14 08:40

比较简单的DFS题,直接暴力搜索即可。

代码:

#include<cstdio>#include<cstring>#include<iostream>using namespace std;int n,ans;char map[5][5];void DFS(int now){    ans=max(ans,now);    for(int i=0;i<n;i++)for(int j=0;j<n;j++){    bool is=0;    if(map[i][j]=='X'||map[i][j]==1)continue;    for(int k=i+1;k<n;k++)    {if(map[k][j]=='X')    break;if(map[k][j]==1){    is=1;    break;}    }    if(is)continue;    for(int k=i-1;k>=0;k--)    {if(map[k][j]=='X')    break;if(map[k][j]==1){    is=1;    break;}    }    if(is)continue;    for(int k=j+1;k<n;k++)    {if(map[i][k]=='X')    break;if(map[i][k]==1){    is=1;    break;}    }    if(is)continue;    for(int k=j-1;k>=0;k--)    {if(map[i][k]=='X')    break;if(map[i][k]==1){    is=1;    break;}    }   if(is)       continue;   map[i][j]=1;   DFS(now+1);   map[i][j]=0;}}int main(){    while(scanf("%d",&n)&&n)    {char ch;ans=0;for(int i=0;i<n;i++)    scanf("%s",map[i]);DFS(0);printf("%d\n",ans);    }    return 0;}


原创粉丝点击