UVa-572油田

分析:DFS基础题,典型题,新手必做之题。
不多做赘述,直接上代码


代码如下:
#include <cstdio>
#include <cstring>
using namespace std;
const int maxn=1000;
int m,n,idx[maxn][maxn];
char pic[maxn][maxn];
void dfs(int r,int c,int id)
{
    if (r<0||r>=m||c<0||c>=n) return;
    if (idx[r][c]>0||pic[r][c]!='@') return;
    int dr,dc;
    idx[r][c]=id;
    for (dr=-1;dr<=1;dr++)
    for (dc=-1;dc<=1;dc++)
        if (dc!=0||dr!=0) dfs(r+dr,c+dc,id);
}
int main()
{
    int i,j;
    while (scanf("%d%d",&m,&n)==2&&m&&n)
    {
        int count=0;
        for (i=0;i<m;i++) scanf("%s",pic[i]);
        memset(idx,0,sizeof(idx));
        for (i=0;i<m;i++)
        for (j=0;j<n;j++)
            if (idx[i][j]==0&&pic[i][j]=='@') dfs(i,j,++count);
        printf("%d\n",count);
    }
    return 0;
}

你可能感兴趣的:(UVa-572)