题目链接

题意 : 问一个m×n的矩形中,有多少个pocket,如果两块油田相连(上下左右或者对角连着也算),就算一个pocket 。

思路 : 写好8个方向搜就可以了,每次找的时候可以先把那个点直接变为*,这样可以避免重复搜索。

  1. //POJ 1562 ZOJ 1709
  2.  
  3. #include <stdio.h>
  4. #include <string.h>
  5. #include <iostream>
  6. #include <stack>
  7. #include <algorithm>
  8.  
  9. using namespace std ;
  10.  
  11. char ch[][] ;
  12. int dir[][] = {{-,-},{-,},{-,},{,},{,},{,},{,-},{,-}} ;
  13. int sum ;
  14. int m,n ;
  15.  
  16. void DFS(int x,int y)
  17. {
  18. ch[x][y] = '*' ;
  19. for(int i = ; i < ; i++)
  20. {
  21. int xx = x + dir[i][] ;
  22. int yy = y + dir[i][] ;
  23. if(xx >= && xx <= m && yy >= && yy <= n && ch[xx][yy] == '@')
  24. {
  25. DFS(xx,yy) ;
  26. }
  27. }
  28. }
  29. int main()
  30. {
  31.  
  32. while(~scanf("%d %d",&m,&n))
  33. {
  34. if(m == ) break ;
  35. for(int i = ; i < m ; i++)
  36. scanf("%s",ch[i]) ;
  37. sum = ;
  38. for(int i = ; i < m ; i++)
  39. for(int j = ; j < n ; j++)
  40. {
  41. if(ch[i][j] == '@')
  42. {
  43. DFS(i,j) ;
  44. sum++ ;
  45. }
  46. }
  47. printf("%d\n",sum) ;
  48. }
  49. return ;
  50. }

POJ 1562 && ZOJ 1709 Oil Deposits(简单DFS)的更多相关文章

  1. ZOJ 1709 Oil Deposits(dfs,连通块个数)

    Oil Deposits Time Limit: 2 Seconds      Memory Limit: 65536 KB The GeoSurvComp geologic survey compa ...

  2. HDU 1241 Oil Deposits --- 入门DFS

    HDU 1241 题目大意:给定一块油田,求其连通块的数目.上下左右斜对角相邻的@属于同一个连通块. 解题思路:对每一个@进行dfs遍历并标记访问状态,一次dfs可以访问一个连通块,最后统计数量. / ...

  3. hdu 1241 Oil Deposits(DFS求连通块)

    HDU 1241  Oil Deposits L -DFS Time Limit:1000MS     Memory Limit:10000KB     64bit IO Format:%I64d & ...

  4. UVA 572 -- Oil Deposits(DFS求连通块+种子填充算法)

    UVA 572 -- Oil Deposits(DFS求连通块) 图也有DFS和BFS遍历,由于DFS更好写,所以一般用DFS寻找连通块. 下述代码用一个二重循环来找到当前格子的相邻8个格子,也可用常 ...

  5. hdu 1241:Oil Deposits(DFS)

    Oil Deposits Time Limit : 2000/1000ms (Java/Other)   Memory Limit : 65536/32768K (Java/Other) Total ...

  6. HDOJ/HDU 1241 Oil Deposits(经典DFS)

    Problem Description The GeoSurvComp geologic survey company is responsible for detecting underground ...

  7. [C++]油田(Oil Deposits)-用DFS求连通块

    [本博文非博主原创,均摘自:刘汝佳<算法竞赛入门经典>(第2版) 6.4 图] [程序代码根据书中思路,非独立实现] 例题6-12 油田(Oil Deposits,UVa572) 输入一个 ...

  8. Oil Deposits(DFS连通图)

    Description The GeoSurvComp geologic survey company is responsible for detecting underground oil dep ...

  9. 【HDU - 1241】Oil Deposits(dfs+染色)

    Oil Deposits Descriptions: The GeoSurvComp geologic survey company is responsible for detecting unde ...

随机推荐

  1. 使用Emmet(前身Zen Coding)加速Web前端开发

    Emmet插件以前被称作为Zen Coding,是一个文本编辑器的插件,它可以帮助您快速编写HTML和CSS代码,从而加速Web前端开发.早在2009年,Sergey Chikuyonok写过一篇文章 ...

  2. JavaScript学习笔记(12)——JavaScript自定义对象

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  3. C# 线程--第四线程实例

    概述 在前面几节中和大家分享了线程的一些基础使用方法,本章结合之前的分享来编写一些日常开发中应用实例,和编写多线程时一些注意点.如大家有好的实例也欢迎分享.. 应用实例 应用:定时任务程序 场景:系统 ...

  4. CCM加密学习

    这几天终于搞定了AES硬件加密工具的使用,几种简单的加密模式也都实验通过了,比较麻烦的一种是CCM模式的加密,它是CTR加密模式和CMAC认证算法的混合使用.本文先介绍CCM模式的原理与基本实现,然后 ...

  5. SOCKET编程:为什么recv不阻塞

    服务器端: #include <sys/types.h> #include <sys/socket.h> #include <netinet/in.h> #incl ...

  6. TestNG使用总结

    1.Eclipse中安装TestNG的方法 打开Eclipse   Help ->Install New Software ,   然后Add   "http://beust.com/ ...

  7. Android 控件收集

    SwipeMenuExpandableListView   https://github.com/tycallen/SwipeMenu-Expandable-ListView

  8. github项目filter_firewall说明

    本文编写的目的: 本文是对上传到github上的项目进行说明.github链接:filter_firewall有任何意见或者建议可以Email:18277973721@sina.cn 项目介绍: 包过 ...

  9. 获取JAVA对象占用的内存大小

    介绍两种获取JAVA对象内存大小的方法. 第一种:Instrumentation 简介: 使用java.lang.instrument 的Instrumentation来获取一个对象的内存大小.利用I ...

  10. Python 信号量

    信号的概念 信号(signal)--     进程之间通讯的方式,是一种软件中断.一个进程一旦接收到信号就会打断原来的程序执行流程来处理信号. 几个常用信号: SIGINT     终止进程  中断进 ...