[kuangbin带你飞]专题一 简单搜索 L HDU 1241

来源:互联网 发布:软件开发模型演进 编辑:程序博客网 时间:2024/06/07 19:33

题目地址:https://vjudge.net/contest/65959#problem/L

思路:判断有多少个联通快。

AC代码:

#include<iostream>#include<cstdio>#include<cstring>#include<map>using namespace std;const int maxn=100+10;char g[maxn][maxn];bool vis[maxn][maxn];int m,n;int xx[8]={-1,-1,-1,0,0,1,1,1};int yy[8]={-1,0,1,-1,1,-1,0,1};void dfs(int x,int y){    vis[x][y]=true;    for(int i=0;i<8;i++)        for(int j=0;j<8;j++)        {            int ii=x+xx[i],jj=y+yy[i];            if(ii<0 || ii>=m ||jj<0||jj>=n)                continue;        if(!vis[ii][jj] && g[ii][jj]=='@')            dfs(ii,jj);        }    return;}int main(){    while(scanf("%d%d",&m,&n) && (n || m))    {        for(int i=0;i<m;i++)            scanf("%s",g[i]);            memset(vis,false,sizeof(vis));            int ans=0;        for(int i=0;i<m;i++)            for(int j=0;j<n;j++)        {            if(!vis[i][j] && g[i][j]=='@')            {                dfs(i,j);                ans++;            }        }        printf("%d\n",ans);    }}


0 0
原创粉丝点击