zoukankan      html  css  js  c++  java
  • POJ-2386-Lake Counting

    比较简单的一道深搜题目,适合练手

     1 //题目链接: http://poj.org/problem?id=2386
     2 //解题思路:将湖泊定义为1, 陆地定义为0, dfs搜索每个点即可
     3 #include <stdio.h>
     4 #include <string.h>
     5 
     6 int map[110][110], vis[110][110];       //map模拟地图,vis用于标记是否访问过
     7 int dir[8][2] = {{-10}, {-11}, {01}, {11}, {10}, {1, -1}, {0, -1}, {-1, -1}};           //八个方向
     8 int n, m;
     9 
    10 void dfs(int x, int y){
    11         int i, j;
    12         if(map[x][y] == 0 || vis[x][y] == 1)    return ;        //已访问或者当前位置为空
    13         vis[x][y] = 1;                                          //标记点(x, y)已访问过
    14         for(i = 0; i < 8; i++){
    15                 dfs(x + dir[i][0], y + dir[i][1]);      //递归访问八个方向
    16         }
    17 }
    18 
    19 int main(){
    20         int i, j;
    21         char str[110];
    22         int ans;
    23         while(scanf("%d %d", &n, &m) != EOF){
    24                 memset(map, 0sizeof(map));    //所有格子初始化为陆地,包括周围的一圈
    25                 memset(vis, 0sizeof(vis));            //所有点初始化为未访问状态
    26                 for(i = 1; i <= n; i++){
    27                         scanf("%s", str);
    28                         for(j = 1; j <= m; j++){
    29                                 if(str[j - 1] == 'W'){          //'w' 为1,' .'为0
    30                                         map[i][j] = 1;
    31                                 }
    32                                 else{
    33                                         map[i][j] = 0;
    34                                 }
    35                         }
    36                 }
    37                 ans = 0;
    38                 for(i = 1; i <= n; i++){
    39                         for(j = 1; j <= m; j++){
    40                                 if(map[i][j] == 1 && vis[i][j] == 0){   //dfs搜索所有未访问过的点
    41                                         ans++;
    42                                         dfs(i, j);
    43                                 }
    44                         }
    45                 }
    46                 printf("%d ", ans);
    47         }
    48         return 0;

    49 }

  • 相关阅读:
    如何提高码农产量,基于ASP.NET MVC的敏捷开发框架开发随笔一
    ASP.NET MVC快速开发框架清新简洁界面设计,有兴趣可以模仿参考
    大湿教我写程序(3)之自动补全(屌丝没有春天)篇
    大湿教我写程序(2)之走向AV之路
    大湿教我写程序(1)之菜单导航篇
    打造一套UI与后台并重.net通用权限管理系统
    如何提高码农产量,基于ASP.NET MVC的敏捷开发框架之自定义表单开发随笔四
    如何提高码农产量,基于ASP.NET MVC的敏捷开发框架之工作流开发随笔三
    摆平客户的需求变更之表单扩展属性
    快速开发框架(FDMS)新增1000个对外接口都不须要手写一行代码
  • 原文地址:https://www.cnblogs.com/angle-qqs/p/4070763.html
Copyright © 2011-2022 走看看