poj - 2386 Lake Counting && hdoj -1241Oil Deposits (简单dfs)

http://poj.org/problem?id=2386

http://acm.hdu.edu.cn/showproblem.php?pid=1241

求有多少个连通子图。复杂度都是O(n*m)。

 1 #include <cstdio>
 2 
 3 char filed[110][110];
 4 int n,m;
 5 void dfs(int x,int y)
 6 {
 7     for(int i=-1;i<=1;i++)
 8         for(int j=-1;j<=1;j++)   //循环遍历8个方向
 9         {
10             int xx=x+i,yy=y+j;
11             if(xx>=0&&xx<n&&yy>=0&&yy<m&&filed[xx][yy]=='W')
12             {
13                 filed[xx][yy]='.';
14                 dfs(xx,yy);
15             }
16         }
17     return;
18 }
19 
20 int main()
21 {
22     //freopen("a.txt","r",stdin);
23     while(~scanf("%d%d",&n,&m))
24     {
25         getchar();
26         int count=0;
27         for(int i=0;i<n;i++) scanf("%s",filed[i]);
28         for(int i=0;i<n;i++)
29             for(int j=0;j<m;j++)
30             if(filed[i][j]=='W')
31             {
32                 dfs(i,j);
33                 count++;
34             }
35         printf("%d\n",count);
36     }
37     return 0;
38 }

 

转载于:https://www.cnblogs.com/nowandforever/p/4518185.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值