博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
A - Oil Deposits(搜索)
阅读量:4314 次
发布时间:2019-06-06

本文共 1733 字,大约阅读时间需要 5 分钟。

搜索都不熟练,所以把以前写的一道搜索复习下,然后下一步整理搜索和图论和不互质的中国剩余定理的题

Description

GeoSurvComp地质调查公司负责探测地下石油储藏。 GeoSurvComp现在在一块矩形区域探测石油,并把这个大区域分成了很多小块。他们通过专业设备,来分析每个小块中是否蕴藏石油。如果这些蕴藏石油的小方格相邻,那么他们被认为是同一油藏的一部分。在这块矩形区域,可能有很多油藏。你的任务是确定有多少不同的油藏。

Input

输入可能有多个矩形区域(即可能有多组测试)。每个矩形区域的起始行包含m和n,表示行和列的数量,1<=n,m<=100,如果m =0表示输入的结束,接下来是n行,每行m个字符。每个字符对应一个小方格,并且要么是'*',代表没有油,要么是'@',表示有油。

Output

对于每一个矩形区域,输出油藏的数量。两个小方格是相邻的,当且仅当他们水平或者垂直或者对角线相邻(即8个方向)。

Sample Input

 
1 1
*
3 5
*@*@*
**@**
*@*@*
1 8
@@****@*
5 5 
****@
*@@*@
*@**@
@@@*@
@@**@
0 0 
 

Sample Output

 
0
1
2
2
 
这道题问油田的块数,也就是说有多少相邻的黑方格数
两重for循环遍历所有的小方格,用mat[i]存放的字符表示第i个小方格是否有油,vis[i] = 0表示这个方格没有被遍历过,vis[i] = 1标记访问过的方格;
在这两重for循环中遇到有油而且没有被访问过的方格就进入dfs函数找他周围的油田,同时coun++,也就是说又发现了一块油田
dfs函数以一个方格为中心,(记得每次遍历一个方格都要改变它的标记状态,vis[i] = 1)遍历它周围的所有方格,遇到边界返回,遇到没有油或者访问过的方格返回。
#include "stdio.h"#include "string.h"int n, m;char mat[105][105];int vis[105][105];void dfs(int x, int y){    if(x < 0 || x >= m || y < 0 || y >= n) return;    if((mat[x][y]  != '@')|| vis[x][y]) return;    mat[x][y] = 1;    for(int i = -1; i <= 1; i++)    {        for(int j = -1; j <= 1; j++)            if(i != 0 || j != 0)            dfs(x+i, y+j);    }}int main(){    while(scanf("%d%d", &m, &n) != EOF)    {        if(m == 0)            break;        int coun = 0;        memset(vis, 0, sizeof(vis));        for(int i = 0; i < m; i++)        {            scanf("%s", mat[i]);        }        for(int i = 0; i < m; i++)        {            for(int j = 0; j < n; j++)            {                if((mat[i][j] == '@') && vis[i][j] == 0)                {                    dfs(i, j);                    ++coun;                }            }        }        printf("%d\n", coun);    }    return 0;}

 

转载于:https://www.cnblogs.com/rain-1/p/4790497.html

你可能感兴趣的文章
HDU 4571 SPFA+DP
查看>>
centos 创建以日期为名的文件夹
查看>>
Java Timer触发定时器
查看>>
Page Object设计模式
查看>>
程序的基础知识
查看>>
在VIM中使用GDB调试 – 使用vimgdb
查看>>
python爬虫---从零开始(五)pyQuery库
查看>>
POJ2236(KB5-A)
查看>>
Centos MySQL数据库迁移详细步骤
查看>>
2初出茅庐--初级篇2.1
查看>>
新建 WinCE7.0 下的 Silverlight 工程
查看>>
腾讯的张小龙是一个怎样的人?
查看>>
jxl写入excel实现数据导出功能
查看>>
linux文件目录类命令|--cp指令
查看>>
.net MVC 404错误解决方法
查看>>
linux系统目录结构
查看>>
git
查看>>
btn按钮之间事件相互调用
查看>>
Entity Framework 4.3.1 级联删除
查看>>
codevs 1163:访问艺术馆
查看>>