您的位置:首页 > 其它

hdu 1312

2011-08-01 15:28 253 查看
恩,直接DFS,还好,不算很慢

#include<iostream>
#include<string>
#include<algorithm>
using namespace std;
char map[21][21];
int n,m,cnt;
int dir[4][2]={{1,0},{-1,0},{0,1},{0,-1}};
void dfs(int si,int sj)
{
for(int k=0;k<4;k++)
{
int i=si+dir[k][0];
int j=sj+dir[k][1];
if(i>0&&i<=m&&j>0&&j<=n&&map[i][j]!='#')
{
map[i][j]='#';
cnt++;
dfs(i,j);
//cout<<i<<' '<<j<<endl;
}
}
return ;
}
int main()
{
int s1,s2;
while(cin>>n>>m&&(n||m))
{
for(int i=1;i<=m;i++)
{
for(int j=1;j<=n;j++)
{
cin>>map[i][j];
if(map[i][j]=='@')
{s1=i;s2=j;}
}
}
map[s1][s2]='#';
cnt=1;
dfs(s1,s2);
cout<<cnt<<endl;
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: