您的位置:首页 > 其它

hdu 1045 Fire Net

2013-08-04 21:11 435 查看


Fire Net

#include<iostream>
#define N 5
using namespace std;
int map

,ans,m,n;
bool visited

,flag;

void dfs(int s)
{
if(s==n*n)
{
if(ans<m) ans=m;
return ;
}
int i,j,k;
i=s/n;j=s%n;
if(!visited[i][j])
{
flag=false;
if(map[i][j]) flag=true;
for(k=i-1;k>=0&&!flag;k--)
{
if(map[k][j]==1) break;
if(visited[k][j]==true)
{
flag=true;
break;
}
}         for(k=j-1;k>=0&&!flag;k--)
{
if(map[i][k]==1) break;
if(visited[i][k]==true)
{
flag=true;
break;
}
}
if(!flag)
{
m++;
visited[i][j]=true;
dfs(s+1);
m--;
visited[i][j]=false;
dfs(s+1);
}
else
{             dfs(s+1);
}
}
}

int main()
{
int i,j;
char t;
while(cin>>n&&n)
{
ans=m=0;
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
cin>>t;
map[i][j]=(t=='X');
visited[i][j]=false;
}
}
dfs(0);
cout<<ans<<endl;
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: