POJ 1979 简单dfs||bfs

时间:2021-08-31 12:04:08

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

分析:直接用dfs。

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

POJ 1979 简单dfs||bfsPOJ 1979 简单dfs||bfsView Code
#include<cstdio>
#include<cstring>
#include<iostream>
using namespace std;
#define maxn 110
int 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;
}