hdu 1241Oil Deposits(BFS)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1241

Oil Deposits

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 13137    Accepted Submission(s): 7611


Problem Description
The GeoSurvComp geologic survey company is responsible for detecting underground oil deposits. GeoSurvComp works with one large rectangular region of land at a time, and creates a grid that divides the land into numerous square plots. It then analyzes each plot separately, using sensing equipment to determine whether or not the plot contains oil. A plot containing oil is called a pocket. If two pockets are adjacent, then they are part of the same oil deposit. Oil deposits can be quite large and may contain numerous pockets. Your job is to determine how many different oil deposits are contained in a grid.

 

Input
The input file contains one or more grids. Each grid begins with a line containing m and n, the number of rows and columns in the grid, separated by a single space. If m = 0 it signals the end of the input; otherwise 1 <= m <= 100 and 1 <= n <= 100. Following this are m lines of n characters each (not counting the end-of-line characters). Each character corresponds to one plot, and is either `*', representing the absence of oil, or `@', representing an oil pocket.

 

Output
For each grid, output the number of distinct oil deposits. Two different pockets are part of the same oil deposit if they are adjacent horizontally, vertically, or diagonally. An oil deposit will not contain more than 100 pockets.

 

Sample Input
1 1
*
3 5
*@*@*
**@**
*@*@*
1 8
@@****@*
5 5
****@
*@@*@
*@**@
@@@*@
@@**@
0 0

 

Sample Output
0
1
2
2
题目大意:
这个题目就是要查找油田的个数,比如说第二组数据
3 5
*@*@*
**@**             注明:"@"这个与他的几个方向都是@都是可以相连的。所以称为一块油田。输出1。
*@*@*
 这种就很容易想到搜索。这里的一个技巧就是起点就从@开始,其次就是找到@就使其变成*;不过找过的还是要标记为1,否则就会重复,这样不连接的还可以继续搜~
东西还是要反复的咀嚼,不然就会很生,忘得差不多0.0
详见代码。
 1 #include <iostream>
 2 #include <cstdio>
 3 #include <queue>
 4 #include <cstring>
 5 
 6 using namespace std;
 7 
 8 int dir[8][2]= {0,1,0,-1,1,0,-1,0,1,1,1,-1,-1,1,-1,-1};
 9 char map[110][110];
10 int a,b,vis[110][110],k;
11 
12 struct node
13 {
14     int x,y;
15     int t;
16 } s,ss;
17 
18 queue<node>q,qq;
19 int bfs()
20 {
21     while (!q.empty())
22     {
23         s=q.front();
24         q.pop();
25         //vis[s.x][s.y]=1;
26         for (int i=0; i<8; i++)
27         {
28             int x=s.x+dir[i][0];
29             int y=s.y+dir[i][1];
30             //int t=s.t+1;
31             if (x>=0&&x<a&&y>=0&&y<b)
32             {
33                 if (!vis[x][y]&&map[x][y]=='@')
34                 {
35                     ss.x=x;
36                     ss.y=y;
37                     map[ss.x][ss.y]='*';
38                     //vis[x][y]=1;
39                     q.push(ss);
40                 }
41 
42             }
43         }
44     }
45 }
46 
47 int main ()
48 {
49     while (scanf("%d%d",&a,&b)!=EOF)
50     {
51         memset(vis,0,sizeof(vis));
52         if (a==0&&b==0)
53             break;
54         for (int i=0; i<a; i++)
55         {
56             getchar();
57             for (int j=0; j<b; j++)
58             {
59                 scanf("%c",&map[i][j]);
60             }
61         }
62         //int k=0;
63         for (int i=k=0; i<a; i++)
64         {
65             for (int j=0; j<b; j++)
66             {
67                 if (map[i][j]=='@')
68                 {
69                     k++;
70                     s.x=i;
71                     s.y=j;
72                     map[s.x][s.y]='*';
73                     vis[s.x][s.y]=1;
74                     q.push(s);
75                     bfs();
76                 }
77             }
78         }
79         printf ("%d\n",k);
80     }
81     return 0;
82 }

 

转载于:https://www.cnblogs.com/qq-star/p/4139845.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/492709.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

重磅!联合国权威AI趋势报告,美中日韩四分天下

来源&#xff1a;智东西摘要&#xff1a;AI趋势报告&#xff0c;中美专利申请和科学出版数遥遥领先。近年来&#xff0c;随着AI从理论知识落地到全球市场&#xff0c;AI正以其潜在的革命性影响&#xff0c;持续推动技术和产业的重大变革&#xff0c;从天气预报、自动驾驶、癌症…

模态窗口和非模态窗口

转载自&#xff1a;https://my.oschina.net/u/2425942/blog/882879 模态窗口就是在该窗口关闭之前&#xff0c;其父窗口不可能成为活动窗口的那种窗口。 例如&#xff1a; 窗口A弹出窗口B,如果窗口B是模态的&#xff0c;在窗口B关闭前就不可能切换到窗口A;如果B是非模态的&…

cut命令详解(转)

线上会log回归&#xff0c;计算请求超时率&#xff0c;会用到cut命令&#xff0c;看了一篇不错的文章&#xff0c;转了。。 1 描述一下cut命令 正如其名&#xff0c;cut的工作就是“剪”&#xff0c;具体的说就是在文件中负责剪切数据用的。 cut是以每一行为一个处理对象的&…

通信产业5G迭代,万亿机遇一触即发

来源&#xff1a;中银国际摘要&#xff1a;进入本世纪一零年代后&#xff0c;全球通信行业首先迎来了4G商用的元年。▌通信产业5G迭代促使中国企业突破进入本世纪一零年代后&#xff0c;全球通信行业首先迎来了4G商用的元年。LTE网络在世界各地开花&#xff0c;“管”领域的性能…

duilib中的添加自定义控件

原理参考博客&#xff1a;https://blog.csdn.net/zhuhongshu/article/details/45362751#commentBox 添加自定义的控件时&#xff0c;让程序识别该控件&#xff0c;要继承IDialogBuilderCallback接口&#xff0c;并实现接口中的CreateControl函数&#xff0c;自定义控件主要是继…

duilib中界面的布局方式

参考博客&#xff1a;https://blog.csdn.net/zhuhongshu/article/details/38531447 常用的布局默认为相对布局&#xff0c;默认floatfalse&#xff0c;该属性为true时&#xff0c;表示绝对布局&#xff1b; 相对布局方式可以依据界面自动调整控件大小。 最常用的VerticalLayout…

『重构--改善既有代码的设计』读书笔记----Split Temporary Variable

继续开始我们重构手法的系列&#xff0c;今天介绍的是Split Temporary Variable---分解临时变量。 在我们平常写的程序中肯定有某些临时变量被赋予了超过一个的责任。如果他们不是那种收集结果&#xff08;temp temp QString("abc")&#xff09;或者循环变量&#…

美丽新世界:这七个原因将让未来更美好

来源&#xff1a;资本实验室摘要&#xff1a;技术进步推动人类社会的进步。然而在现实生活中&#xff0c;对技术的恐惧困扰着相当一部分人。暴走的机器人、失控的AI、滥用的人体增强……这些经常出现于各种反乌托邦科幻故事中的场景也被认为是对技术破坏的一种警示。如果能够从…

学习OpenStack之 (4): Linux 磁盘、分区、挂载、逻辑卷管理 (Logical Volume Manager)

0. 背景&#xff1a; inux用户安装Linux操作系统时遇到的一个常见的难以决定的问题就是如何正确地评估各分区大小&#xff0c;以分配合适的硬盘空间。普通的磁盘分区管理方式在逻辑分区划分好之后就无法改变其大小&#xff0c;当一个逻辑分区存放不下某个文件时&#xff0c;这个…

写论文文献引用方式

打开百度学术&#xff1a; 如下&#xff1a;

美国DARPA204页可解释人工智能文献综述论文《Explanation in Human-AI Systems》

来源&#xff1a;专知摘要&#xff1a;本文介绍Arxiv上的《Explanation in Human-AI Systems》&#xff0c;一篇关于可解释机器学习的综述&#xff0c;介绍了可解释机器学习的多学科观点、历史研究、模型、关键点等。可解释AI是现在正火热的科研和工程问题。Arxiv上一篇《Expla…

Thinkphp系统常量

预定义常量 常量说明URL_COMMON0普通模式 URLURL_PATHINFO1PATHINFO URLURL_REWRITE2REWRITE URLURL_COMPAT3兼容模式 URLHAS_ONE1HAS_ONE 关联定义BELONGS_TO2BELONGS_TO 关联定义HAS_MANY3HAS_MANY 关联定义MANY_TO_MANY4MANY_TO_MANY 关联定义THINK_VERSION框架版本号这些预…

显卡的显存

首先说明&#xff0c;转载自&#xff1a;百度知道&#xff0c;作者&#xff1a;asdf_12346 网址&#xff1a;https://zhidao.baidu.com/question/216504146.html 千万注意不要只看显存大小了&#xff0c;显存大小只是影响显卡性能的一个很次要的因素而已。不了解的人很容易被商…

BestCoder22 1003.NPY and shot 解题报告

题目链接&#xff1a;http://acm.hdu.edu.cn/showproblem.php?pid5144 题目意思&#xff1a;有个人抛物体&#xff0c;已知抛的速度和高度&#xff0c;问可以抛到的最远距离是多少。即水平距离。 做的时候是抄公式的&#xff0c;居然过了&#xff0c;幸运幸运............ 1 #…

37页PPT,全面解读5G产业链及未来趋势!

来源&#xff1a;国信证券经济研究所、全球物联网观察摘要&#xff1a;接下来的一年&#xff0c;5G无疑是全球关注的焦点。接下来的一年&#xff0c;5G无疑是全球关注的焦点。5G开始商用化&#xff0c;除了进一步促进移动互联网的发展&#xff0c;更重要的是会促进移动互联网和…

C++二级指针

如果动态分配一个2维数组&#xff0c;3行4列&#xff0c; int **map new int*[3]; for (int i 0; i < 3; i) {*(map i) new int[4]; }当这样写是动态申请的内存&#xff0c;内存空间为如下所示。可以看出动态申请的二维数组中内存不是连续的&#xff0c; for (int i …

atoi简析

原文链接 atoi()函数的功能&#xff1a;将字符串转换成整型数&#xff1b;atoi()会扫描参数nptr字符串&#xff0c;跳过前面的空格字符&#xff0c;直到遇上数字或正负号才开始做转换&#xff0c;而再遇到非数字或字符串时&#xff08;\0&#xff09;才结束转化&#xff0c;并将…

盘点2018十大科技丑闻,IT相关两项

来源&#xff1a;科技日报2018这一年里&#xff0c;风起云涌的科技界很忙&#xff0c;有些人尝到了甜头&#xff0c;有些人却吃到了苦头&#xff0c;有些事件令人瞠目结舌、难以置信……   盘点2018年十大科技丑闻是为了更加清醒地看到科技发展过程中的不尽如人意。  更重要…

QT安装和Hello,world

QT安装环境介绍&#xff1a; https://blog.csdn.net/hechao3225/article/details/52981007 教程&#xff1a; http://c.biancheng.net/qt/ Hello,world简单示例&#xff0c;VS下编写纯代码的界面&#xff1a; http://c.biancheng.net/view/1824.html 第一步&#xff1a; 第二…

(转) 基于MapReduce的ItemBase推荐算法的共现矩阵实现(一)

转自&#xff1a;http://zengzhaozheng.blog.51cto.com/8219051/1557054 一、概述 这2个月为公司数据挖掘系统做一些根据用户标签情况对用户的相似度进行评估&#xff0c;其中涉及一些推荐算法知识&#xff0c;在这段时间研究了一遍《推荐算法实践》和《Mahout in action》&…