简单题目的dfs模版

来源:互联网 发布:手机直播软件排名 编辑:程序博客网 时间:2024/06/04 23:57
#include<iostream>#include<cstdio>#include<algorithm>#include<string>#include<cstring>#include<cstdlib>#include<set>#include<map>#include<vector>#include<iomanip>const int MAX=200;using namespace std;char arr[MAX][MAX];int dir[4][2]={{1,0},{0,1},{-1,0},{0,-1}};int w,h; int sum=1;int dfs(int x,int y){    arr[x][y]='#';    for(int k=0;k<4;k++)    {    int dx=x+dir[k][0];    int dy=y+dir[k][1];    if(0<dx&&dx<=h&&0<dy&&dy<=w&&arr[dx][dy]=='.')    {                        sum++;                        dfs(dx,dy);    }    }    return 0;}int main(){while(scanf("%d%d",&w,&h)&&w&&h){   int beg,end;                for(int i=1;i<=h;++i)                {                for(int j=1;j<=w;++j)                {                             cin>>arr[i][j];                if(arr[i][j]=='@')                {                                                   beg=i;                                                   end=j;                }                }                }                dfs(beg,end);                printf("%d\n",sum);                sum=1;}return 0;}

0 0
原创粉丝点击