HDOJ 1241 Oil Deposits

来源:互联网 发布:c语言32个关键字的意思 编辑:程序博客网 时间:2024/06/14 00:33

题意:(dfs水题)

    一个n*m的矩阵,每个@点周围的8个相邻的点也是@

    就说明他们是连在一起的水洼,求一共有多少水洼。

分析:

   dfs从前到后遍历的搜索,搜到一个就将其改为*以防重复计数

    然后在遍历的过程中记录一下水洼的数目即可。

#include <iostream>#include <cstdio>using namespace std;const int maxn = 105;int m,n;//int dx[4]={-1,0,0,1},dy[4]={0,1,-1,0};char grid[maxn][maxn];void dfs(int x,int y){    grid[x][y]='*';    int nx,ny,dx,dy;    for(dx=-1;dx<=1;dx++)    {        for(dy=-1;dy<=1;dy++)        {            nx=dx+x; ny=dy+y;            if(nx>=0&&nx<m&&ny>=0&&ny<n&&grid[nx][ny]=='@')            {                dfs(nx,ny);            }        }    }    return ;}int main(){    int ans;    //freopen("in.txt","r",stdin);    while((scanf("%d%d",&m,&n)!=EOF)&&m)    {        ans=0;        int i,j;        for(i=0;i<m;i++)        {            getchar();            for(j=0;j<n;j++)                scanf("%c",&grid[i][j]);        }        for(i=0;i<m;i++)        {            for(j=0;j<n;j++)                if(grid[i][j]=='@')                   {                        dfs(i,j);                        ans++;                   }        }        printf("%d\n",ans);    }
    return 0;}


 

0 0
原创粉丝点击