POJ 1979 简单dfs||bfs

来源:互联网 发布:linux oracle 进程 编辑:程序博客网 时间:2024/05/18 20:45

//题意:求从@出发的连续的'.'的个数。

分析:直接用dfs。

感悟:我很水啊,这题敲了半天。加油啊,亲。

View Code
#include<cstdio>#include<cstring>#include<iostream>using namespace std;#define maxn 110int n,m;char str[maxn][maxn];int dir[4][2]={{0,1},{1,0},{0,-1},{-1,0}};int sum;void dfs(int s,int e){    for(int i=0;i<4;i++){        int xx=s+dir[i][0];        int yy=e+dir[i][1];        printf("xx=%d    yy=%d\n",xx,yy);        if(xx<0||xx>=m||yy<0||yy>=n){            continue;        }        if(str[xx][yy]=='.'){            sum++;            str[xx][yy]='#';            dfs(xx,yy);        }    }}int main(){    while(scanf("%d%d",&n,&m)!=EOF){        int si,sj;        if(n==0&&m==0)  break;        for(int i=0;i<m;i++){            scanf("%s",str[i]);            for(int j=0;j<n;j++){                //scanf                if(str[i][j]=='@'){                    si=i;                    sj=j;                }            }            //dfs(si,sj);        }        sum=1;        str[si][sj]='#';        dfs(si,sj);        printf("%d\n",sum);    }    return 0;}

 

原创粉丝点击