nyoj-27-水池数目

 1  // 题目地址: http://acm.nyist.net/JudgeOnline/status.php?pid=27
 2  // 解题思路:裸的dfs, 遍历每个格子dfs访问当前格子的相领格子
 3  #include <stdio.h>
 4 #include < string.h>
 5 
 6  int map[ 110][ 110], vis[ 110][ 110];
 7  int dx[ 4] = { 00, - 11};
 8  int dy[ 4] = {- 1100};
 9 
10  void dfs( int x,  int y){
11          int i;
12          if(map[x][y] ==  0 || vis[x][y] ==  1)     return ;         // 访问过,或者不存在水池则返回
13          vis[x][y] =  1;
14          for(i =  0; i  < 4; i++){
15                 dfs(x + dx[i], y + dy[i]);
16         }
17  //         dfs(x - 1, y);
18  //         dfs(x +1, y);
19  //         dfs(x, y - 1);
20  //         dfs(x, y + 1);
21  }
22 
23  int main(){
24          int t, n, m, i, j;
25          int ans;
26         scanf( " %d ", &t);
27          while(t--){
28                 scanf( " %d %d ", &n, &m);
29                 memset(map,  0sizeof(map));
30                 memset(vis,  0sizeof(vis));
31                  for(i =  1; i <= n; i++){
32                          for(j =  1; j <= m; j++){
33                                 scanf( " %d ", &map[i][j]);
34                         }
35                 }
36                 ans =  0;
37                  for(i =  1; i <= n; i++){
38                          for(j =  1; j <= m; j++){
39                                  if(map[i][j] ==  1 && vis[i][j] ==  0){
40                                         ans++;
41                                         dfs(i, j);
42                                 }
43                         }
44                 }
45                 printf( " %d\n ", ans);
46         }
47          return  0;
48 }

转载于:https://www.cnblogs.com/angle-qqs/p/4070251.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值