杭电1312HDU acm ---Red and Black---DFS深度优先算法

来源:互联网 发布:nginx 目录映射 编辑:程序博客网 时间:2024/06/05 07:10

题目描述:http://acm.hdu.edu.cn/showproblem.php?pid=1312


史上最简单的搜索题,思路:

找到man的位置作为搜索的起始位置,一次搜索解决问题!

#include <iostream>#include<string.h>using namespace std;#define N 20int m,n;int dirctions[4][2]={{0,1},{1,0},{0,-1},{-1,0}};int visited[N][N];char map[N][N];int sum=0;void DFS(int x,int y){    int nx,ny;    for(int i=0;i<4;i++)    {        nx=x+dirctions[i][0];        ny=y+dirctions[i][1];        if(map[nx][ny]=='.'&&nx>=0&&nx<m&&ny>=0&&ny<n&&visited[nx][ny]==0)        {            visited[nx][ny]=1;            sum++;            DFS(nx,ny);        }    }}int main(){    int i,j,x,y;    while(cin>>n>>m)    {        if(m==0||n==0)            break;        for(i=0;i<m;i++)            for(j=0;j<n;j++)            {                cin>>map[i][j];                if(map[i][j]=='@')                {                    x=i;                    y=j;                }            }        memset(visited,0,sizeof(visited));        sum=1;        DFS(x,y);        cout<<sum<<endl;    }    return 0;}