6-12 油田 uva572

时间:2021-06-25 08:17:17

DFS入门题

注意输入的\n要处理!

#include<bits/stdc++.h>
using namespace std;
char a[][];
int n,m;
bool f[][]; void dfs(int x,int y,int flag)
{
if(x>n||y>m||x<||y<)return ;
if(f[x][y]||a[x][y]!='@')return ;
a[x][y]=flag;
for(int r=-;r<=;r++)
for(int left=-;left<=;left++)
if(r||left)dfs(x+r,y+left,flag); } int main()
{ while(cin>>n>>m&&n&&m)
{ getchar();
memset(a,,sizeof(a));
memset(f,false,sizeof(f));
for(int i=;i<=n;i++)
{for(int j=;j<=m;j++)
scanf("%c",&a[i][j]);
getchar();}
int c=;
for(int i=;i<=n;i++)
for(int j=;j<=m;j++)
if(a[i][j]=='@'&&f[i][j]==false)dfs(i,j,++c);
printf("%d\n",c); } }