首页 > 其他分享 >深搜---油田问题

深搜---油田问题

时间:2024-07-26 18:54:32浏览次数:10  
标签:问题 油藏 int --- 110 dx dy 油田 path

题目描述

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

输入

每个矩形区域的起始行包含m和n,表示行和列的数量,接下来是n行,每行m个字符。每个字符对应一个小方格,并且要么是’*’,代表没有油,要么是’@’,表示有油。

输出

对于每一个矩形区域,输出油藏的数量。两个小方格是相邻的,

当且仅当他们水平或者垂直或者对角线相邻(即8个方向)。

#include<bits/stdc++.h>
using namespace std;
int fx[8][2]={{-1,-1},{-1,0},{-1,1},{0,-1},{0,1},{1,-1},{1,0},{1,1}};
int n,m;
int vist[110][110];
char path[110][110];
int sum;
void dfs(int x,int y){
	for(int i=0;i<8;i++){
		int dx=x+fx[i][0];
		int dy=y+fx[i][1];
		if(dx<0||dx>n||dy<0||dy>m||path[dx][dy]=='*'){
			continue;
		}
		if(!vist[dx][dy]&&path[dx][dy]=='@'){
		vist[dx][dy]=1;
		dfs(dx,dy);
		}
	}
}
int main()
{
	cin>>n>>m;
	for (int i = 0; i < n; i++){
        scanf("%s",path[i]);
    }
	for(int i=0;i<n;i++)
	for(int j=0;j<m;j++)
	{
		if(path[i][j]=='@'&&!vist[i][j]){
			sum++;
			dfs(i,j);
		}
	}
	cout<<sum;
}

标签:问题,油藏,int,---,110,dx,dy,油田,path
From: https://blog.csdn.net/2301_76268065/article/details/140722731

相关文章

  • 【待做】【AI+安全】数据集:图像分类数据集-1000
    图像分类数据集-1000Sort_1000pics数据集包含了1000张图片,总共分为10大类,分别是人(第0类)、沙滩(第1类)、建筑(第2类)、大卡车(第3类)、恐龙(第4类)、大象(第5类)、花朵(第6类)、马(第7类)、山峰(第8类)和食品(第9类),每类100张。内容类型:图像样本使用范围:图像分类、恶意家族分类推荐理由:个人感......
  • java静态代码检测-spotbugs
    以前使用的findbugs宣布在2016年后已经不做维护了,取而代之的是spotbugs.要想使用spotbugs,需要在代码仓库中做一些配置1.在maven项目的pom.xml文件中,加入依赖包: officalwebsiteurlreference: https://spotbugs.readthedocs.io/en/latest/maven.html<plugin><groupId......
  • 网络规划设计师-日常学习5-STP汇总
    目录STP定义BPDU交换时间HelloTime:ForwardDelay:MaxAge:STP接口状态STP几个重要要素根交换机(RootSwitch)主路径(RootPath)端口角色收敛时间(ConvergenceTime)STP选举过程示例网络拓扑规划如下:分析过程选举根交换机选举根端口1、比较路径开销(到根交换机A)2......
  • P10218-魔法手杖
    题面\(O(nk^2)\)我们考虑如果确定了\(ans\),如何判断是否合法?考虑从高到低逐位确定\(x\)。设\(ans\)和\(x\)的第\(i\)位为\(ans_i,x_i\)。分类讨论一波:如果\(ans_i\)为:0:无论\(x_i\)取什么,总有一边在异或\(x\)后第\(i\)位为1。\(x_i=0\),那么右子树一定......
  • uniapp(安卓苹果app端) - 微信小程序分享提示报错“由于不支持的分享类型无法分享到微
    问题说明在uni-app(手机app端)安卓Android、苹果ios系统中,解决分享微信小程序时,页面提示:由于不支持的分享类型无法分享到微信|由于应用和小程序未绑定在同意微信开放平台账号,无法分享到微信,uniApp开发App分享微信时出现无法分享且报错提示、分享不可用、微信appid、配置......
  • VMware Fusion Pro 虚拟机 免费了附最新版 13.5.2-23775688 下载地址
    VMwareFusionPro可以帮助用户在Mac上安装Windows、Linux等多种操作系统,最重要的是无需重启电脑切换系统,可以和MacOS系统同时运行,就类似于MacOS安装了一个应用。对于家庭用户来说足够简单,对于IT专业人员,开发人员和企业来说足够强大。VMwareFusionPro是一款强大的......
  • Redis应用场景-分布式锁
    1.创建springboot项目2.添加依赖<?xmlversion="1.0"encoding="UTF-8"?><projectxmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="htt......
  • Java-----学习笔记4
    Java中的方法Java中的方法与C语言的函数有些相似,它们都是为了完成特定功能的代码块,都可以被多次调用。main方法publicstaticvoidmain(String[]args){}public---访问控制符,控制方法可见性。static---这个关键字表示该方法是静态的。void---返回类型void--不需要......
  • YOLOv10改进 | 独家创新- 注意力篇 | YOLOv10引入结合ECA和NRMS形成全新的ERMS注意力
    1. ERMS介绍     (1).整合通道和空间注意力机制:     ECA模块专注于通道间的交互,通过全局平均池化提取每个通道的全局信息,然后通过一维卷积生成每个通道的权重,最终使用Sigmoid激活函数得到通道注意力权重,从而增强重要通道的特征。然而,ECA模块没有考虑到......
  • es6-splice方法例子
    constarr=['a','b','c','d'];////1.1、删除指定位置的一个元素//arr.splice(1,1);//console.log('arr',arr);//["a","c","d"]////1.2、删除指定位置的两个元素/......