zoj2165(dfs)

来源:互联网 发布:淘宝基础版导航栏全屏 编辑:程序博客网 时间:2024/06/14 01:09

题解:

深度优先搜索,简单题

判断临界+下一个方向上的字符为'.'


代码;


#include<stdio.h>#include<algorithm>#include<iostream>#include<string.h>#define M 20+10using namespace std;int m,n;char map[M][M];int dir[4][2]={{0,-1},{0,1},{1,0},{-1,0}};int xx,yy;int cou;void dfs(int x,int y){    map[x][y]='#';    for(int i=0;i<4;i++)    {        xx=x+dir[i][0];        yy=y+dir[i][1];        if(xx>=0 && xx<n && yy>=0 && yy<m && map[xx][yy]=='.')        {            dfs(xx,yy);            cou++;        }    }}int main(){    while(scanf("%d%d",&m,&n),n||m)    {        cou=0;        int ii,jj;        for(int i=0;i<n;i++)            scanf("%s",map[i]);        for(int i=0;i<n;i++)            for(int j=0;j<m;j++)        {            if(map[i][j]=='@')            {                ii=i;                jj=j;            }        }        dfs(ii,jj);        printf("%d\n",cou+1);    }    return 0;}


0 0
原创粉丝点击