hdu 1241 dfs 类似于(POJ水坑数)

来源:互联网 发布:tbc数据库 编辑:程序博客网 时间:2024/06/06 18:34
题意:求@的堆数,只要周围没有相邻的@ 那么就算一堆。。
思路:DFS,类似于POJ解题报告里的深搜水坑数,不解释。。直接上代码。
#include<iostream>using namespace std;int vis[100][100];char map[100][100];int dir[8][2]={{-1,1},{0,1},{1,1},{1,0},{1,-1},{0,-1},{-1,-1},{-1,-0}};int m,n;void dfs(int a,int b){     int ta,tb;     vis[a][b]=1;     for(int i=0;i<8;i++)     {       ta=a+dir[i][0];       tb=b+dir[i][1];       if(!vis[ta][tb]&&ta>=0&&ta<m&&tb>=0&&tb<n&&map[ta][tb]=='@')       {         vis[ta][tb]=1;         dfs(ta,tb);       }     }     return ;     }int main(){    while(scanf("%d%d",&m,&n)!=EOF)    {      memset(vis,0,sizeof(vis));      int step=0;      if(m==0&&n==0)  break;      for(int i=0;i<m;i++)       for(int j=0;j<n;j++)          cin>>map[i][j];       for(int i=0;i<m;i++)        for(int j=0;j<n;j++)        {          if(!vis[i][j]&&map[i][j]=='@')          {            dfs(i,j);            step++;          }        }        printf("%d\n",step);    }}


原创粉丝点击