hud 1312 Red and Black

来源:互联网 发布:炒股模拟软件下载 编辑:程序博客网 时间:2024/06/14 11:54

题目:

    链接:点击打开链接

题意:

    DFS搜索

算法:

    dfs

思路:

    简单题

代码:

#include<iostream>#include<cstdio>#include<cstring>using namespace std;int w,h;char s[30][30];int vis[30][30];int cnt;void dfs(int x,int y){    if(s[x][y] == '#' || vis[x][y])        return ;    if(x>=h || y>=w || x<0 || y<0)        return ;    if(s[x][y] == '@' && vis[x][y] == 0)    {        ++cnt;    }    if(s[x][y] == '.' && vis[x][y] == 0)    {        ++cnt;        s[x][y] = '@';    }    vis[x][y] = 1;    dfs(x-1,y);    dfs(x,y-1);    dfs(x,y+1);    dfs(x+1,y);}int main(){    //freopen("input.txt","r",stdin);    while(scanf("%d%d",&w,&h) != EOF && (w || h))    {        memset(vis,0,sizeof(vis));        memset(s,0,sizeof(s));        getchar();        for(int i=0; i<h; i++)            gets(s[i]);        cnt = 0;        for(int i=0; i<h; i++)        {            for(int j=0; j<w; j++)            {                if(s[i][j] == '@' && vis[i][j] == 0)                {                    dfs(i,j);                }            }        }        cout<<cnt<<endl;    }    return 0;}


0 0