【P1506 拯救oibh总部】

2024-02-11 15:28
文章标签 拯救 总部 p1506 oibh

本文主要是介绍【P1506 拯救oibh总部】,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

拯救oibh总部

题目背景

oibh 总部突然被水淹没了!现在需要你的救援……

题目描述

oibh 被突来的洪水淹没了,还好 oibh 总部有在某些重要的地方起一些围墙。用 * 号表示,而一个四面被围墙围住的区域洪水是进不去的。

oibh 总部内部也有许多重要区域,每个重要区域在图中用一个 0 表示。

现在给出 oibh 的围墙建设图,问有多少个没被洪水淹到的重要区域。

输入格式

第一行为两个正整数 x , y x,y x,y

接下来 x x x 行,每行 y y y 个整数,由 *0 组成,表示 oibh 总部的建设图。

输出格式

输出没被水淹没的 oibh 总部的 0 的数量。

样例 #1

样例输入 #1

4 5
00000
00*00
0*0*0
00*00

样例输出 #1

1

样例 #2

样例输入 #2

5 5
*****
*0*0*
**0**
*0*0*
*****

样例输出 #2

5

提示

对于 100 % 100\% 100% 的数据, 1 ≤ x , y ≤ 500 1 \le x,y \le 500 1x,y500

#include<iostream>
using namespace std;
int n,m,s=0;
int kx[5]={1,-1,0,0};
int ky[5]={0,0,1,-1};
int a[501][501];void search(int x,int y){a[x][y]=2;//先标记被淹没了 for(int i=0;i<4;i++){//向四个方向搜索 int x0=x+kx[i];int y0=y+ky[i];if(x0>0&&x0<=n&&y0>0&&y0<=m&&a[x0][y0]==0)search(x0,y0);}//如果新的数在整个数组范围内并且不是障碍(能走),那么就搜索从这个格子能走到其他哪些格子 
}int main(){cin>>n>>m;char e;for(int i=1;i<=n;i++){//输入 for(int j=1;j<=m;j++){cin>>e;if(e=='*')a[i][j]=1;//如果是障碍就输入1 else a[i][j]=0;//可以过就是0 }}for(int i=1;i<=n;i++){//搜索第一列和最后一列的格子 if(a[i][1]==0)search(i,1);//如果有能过的就搜索 if(a[i][m]==0)search(i,m);}for(int i=1;i<=m;i++){//搜索第一行和最后一行的格子 if(a[1][i]==0)search(1,i);if(a[n][i]==0)search(n,i);}for(int i=1;i<=n;i++){//最后搜索没有被淹的格子 for(int j=1;j<=m;j++){if(a[i][j]==0)s++;}}cout<<s<<endl;//输出 return 0;
}

整体思路: 这个思路比较清晰。
首先,搜索周围的区域,把这些区域内所有的被淹没的统统标记出来;
然后,遍历剩下的区域,把没有被淹没的区域统计出来。
算法的思想是:利用深搜算法思想。上面代码中,那个search函数实现了这个算法思想。

这篇关于【P1506 拯救oibh总部】的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/700147

相关文章

U盘未初始化困境与数据拯救

U盘未初始化现象深度剖析 在数字化时代,U盘作为便携式存储设备,承载着人们日常学习、工作、生活中的大量数据。然而,当U盘突然显示“未初始化”时,这些宝贵的数据仿佛一夜之间被锁进了无形的牢笼,让人心急如焚。U盘未初始化,意味着其文件系统结构可能已遭破坏,导致操作系统无法正确识别并访问其中的数据。这一现象背后,可能隐藏着多种原因:文件系统损坏、分区表丢失、不当的插拔操作、甚至是物理层面的轻微损伤等。

央行上海总部公示第三批创新监管试点应用拟纳入区块链项目

链问财经(lianwencj28.com)报道,月4日,中国人民银行上海总部发布《上海金融科技创新监管试点应用公示(第三批)》指出,现对3个拟纳入创新监管试点应用向社会公开征求意见,包括“基于区块链的B2B订单管理服务”、“基于大数据技术的客户营销服务”、“‘会银通’第三方电子函证平台”。 据悉,“基于区块链的B2B订单管理服务”由浦发银行与北京中科金财科技股份有限公司联合推出,在交易各方授权的

4.4 bps 拯救小哈

题目: 代码: #include<stdio.h>#include<stdlib.h>#include<string.h>//只有一个路线,没有深度优先的分支!!!//节点法创建顺序队列//节点typedef struct note{int x;int y;int s;}note;int main(){int i,j,k,n,p,q,tx,ty,flag,book[51][5

趣味算法------拯救阿拉德大陆

目录 ​编辑 题目描述: 思路解析: 具体代码: 总结: 题目描述: 此时一批勇士也随之而来,但其能力也是参差不齐,我们需要挑选出最优秀的勇士来守护这片大陆。每位勇士都有属于自己的编号,而我们现在有四张卡片里面分别标记了一个号码,当勇士的编号为其中某一张卡片中号码的倍数时说明该勇士是优秀的。目前有 n 名勇士(编号 1-n)并且告诉你卡片内的号码,请你计算出能挑选出多

大型企业总部到分公司的数据分发如何选择好的传输方案?

在当今数字化时代,大型企业的数据分发策略对于保持业务连续性和提高运营效率至关重要。数据分发不仅需要考虑速度和成本,还要确保数据的安全性和可靠性。那么大型企业总部到分公司的数据分发如何选择好的传输方案? 数据分发的重要性 在大型企业中,数据是连接各个分支机构、合作伙伴和客户的重要纽带。有效的数据分发能够确保信息的实时更新和共享,从而提高决策的效率和准确性。此外,数据分发还涉及到企业的合规

联想拯救者r720自带win10安装linux(ubuntu)双系统

联想拯救者R720自带win10安装linux(ubuntu)双系统 准备事项 ubuntu的u盘启动(网上有教程,下个比较新的版本,本人用的ubuntu16.04)关闭win10的快速启动(也可以不关闭,不关闭的话可能会导致以后ubuntu不能读取windows里的盘符。)在磁盘管理器中压缩出给ubuntu的空闲空间,然后关闭计算机。我是128gSSD+1THDD,win10作为主系统放在S

拯救大学生(非常令人深思)--转载…

每天晚上,睡觉的时候我习惯躺在床上刷刷微波,有些人的微博很有价值,浓缩了他对某件事情或人生深度认识的精华,并以简短的语句表达出来,或者是其看了某本书后的感悟,或直接截图!我感觉我每天在从中吸取营养!    昨晚,当我看到下面这条微博后,竟然让我睡不着!   这篇微博是周公(广州周立功懂事)的,他为嵌入式在中国的普及做了很大的贡献!应该算嵌入式大佬!   睡不着是因

AI生成未来 | 2024第二届拯救者杯OPENAIGC开发者大赛圆满收官!

8月17日,由AIGC开放社区携手联想拯救者、英特尔共同主办的“2024拯救者杯OPENAIGC开发者大赛”在上海中庚聚龙酒店完美收官。这场比赛吸引了来自全国各地的2300多名开发者,组成554支队伍参赛,最终当日179支队伍在决赛中角逐AI桂冠。 在三大赛道中,“AI Agent极限挑战赛”以其独特的现场揭晓题目,全程6小时使用搭载了第14代英特尔®酷睿™i9-14900HX处理器和高性能显卡

HCIA 19 结束 企业总部-分支综合实验(下)

3.6出口NAT配置可以访问互联网 配置NAT使内网可以访问公网8.8.8.8,当前总部PC1 PING不通公网地址8.8.8.8。 3.6.1总部配置NAT访问互联网 步骤1:配置NAT acl number 2000    rule 5 permit source 192.168.0.0 0.0.255.255 # interface GigabitEthernet0/0/2

金蝶盘点机PDA 门店手持PDA扫描条码查询账面库存录入要货数量生成要货申请单,总部手持PDA选择要货申请单,扫描条码按照要货单进行发货

要货申请单 优势点:使用盘点机PDA扫描商品条码做要货申请单,不用去电脑上人工手工一行行录入。手持PDA扫描商品货架,实时查询库存,录入要货数量,自动生成要货申请单。总部电脑上立即可以看到这个要货申请单,对要货申请单进行审核。总部仓管员手持PDA在【仓库调拨单】中查询选择需要配货的【要货申请单】,就知道需要发什么商品,发多少数量,并且在扫描发货时实现商品品种校验,和商品数量个校验,防止发错发