POJ 1979 Red and Black

来源:互联网 发布:网络教育统考报名网 编辑:程序博客网 时间:2024/04/26 20:15

原题链接

思路:经典深搜

AC代码:

#include <iostream>#include <cstdio> #include <algorithm>#include <cstdlib>#include <cstring>#include <queue>using namespace std;//与POJ_2386水洼题相似 //dfs深度优先搜索 int ans,dis[21][21],w,h;char room[21][21];int dx[4]={1,0,0,-1};int dy[4]={0,1,-1,0};void dfs(int x,int y){    int i;    for(i=0;i<4;i++){        int x0=x+dx[i],y0=y+dy[i];        if(room[x0][y0]=='.' && dis[x0][y0]==0 && x0>=0 && y0>=0 && x0<h && y0<w){            dis[x0][y0]=1;            ans++;            dfs(x0,y0);        }    }    return; } int main(){    int i,j,x0,y0;    cin>>w>>h;    getchar();    while(w||h){        ans=0;        memset(dis,0,sizeof(dis));        for(i=0;i<h;i++)  gets(room[i]);        for(i=0;i<h;i++){            for(j=0;j<w;j++){                if(room[i][j]=='@'){                    dis[i][j]=1;                    ans++;                    dfs(i,j);                }            }        }        printf("%d\n",ans);        cin>>w>>h;        getchar();    }    return 0;}
1 0
原创粉丝点击