搜索 dfs POJ 2386

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Hepburn_Sunsir/article/details/89076482

http://poj.org/problem?id=2386 POJ 2386 dfs

#include<cstdio>
#include<cstring>
#include<string>
#include<iostream>
#include<stack>
#include<queue>
using namespace std;
int  cnt;
char mass[1001][1001];//一直AC不了,范围设的有点小。
int n,m,to[8][2]={-1,1, 0,1, 1,1 ,1,0 ,1,-1 ,0,-1, -1,-1, -1,0};
void dfs(int x, int y){
    for(int i=0; i<8; i++)
    {
        if(x+to[i][0]<n&&x+to[i][0]>=0&&
           y+to[i][1]<m&&y+to[i][1]>=0&&
           mass[x+to[i][0]][y+to[i][1]]=='W')
        {
            mass[x+to[i][0]][y+to[i][1]]='.';
             dfs(x+to[i][0], y+to[i][1]);
        }
        
    }
}
int main(){
    scanf("%d%d",&n,&m);
    for(int i=0; i<n; i++)
        scanf("%s",&mass[i]);
    cnt = 0;
    for(int i=0; i<n; i++){
        for(int j=0; j<m; j++)
        {
            if(mass[i][j]=='W'){cnt++;dfs(i,j);}
        }
    }
    printf("%d\n",cnt);
    return 0;
}

猜你喜欢

转载自blog.csdn.net/Hepburn_Sunsir/article/details/89076482