洛谷----P1506 拯救oibh总部
题目背景
oibh总部突然被水淹没了!现在需要你的救援……
题目描述
oibh被突来的洪水淹没了>.<还好oibh总部有在某些重要的地方起一些围墙,用*号表示,而一个封闭的*号区域洪水是进不去的……现在给出oibh的围墙建设图,问oibh总部没被淹到的重要区域(由"0"表示)有多少。
输入格式
第一行是两个数,x和y(x,y<=500)
第二行及以下是一个由*和0组成的x*y的图。
输出格式
输出没被水淹没的oibh总部的“0”的数量。
输入输出样例
输入 #1复制
样例输入1 4 5 00000 00*00 0*0*0 00*00样例输入2 5 5 ***** *0*0* **0** *0*0* *****
输出 #1复制
样例输出1 1样例输出2 5
思路:这道题主要是需要弄懂题意和细节,题意是求被墙围起来的‘0’的个数。
很经典的dfs+记忆化搜索:找到‘0’就搜索,如果边界都是‘*’就说明围起来了,如果边界有‘0’就说明会被洪水淹没,使用变量记录围起来的‘0’的个数,不然会超时。
#include <iostream>
#include <math.h>
#include <algorithm>
#include <stack>
#include <string.h>
#include <vector>
#include <cstring>
using namespace std;
int n,vis[505][505],x,y,ans=0,k=1,t=0;
int dx[4]={0,0,1,-1},dy[4]={1,-1,0,0};
char a[505][505];
void dfs(int q,int w)
{if(a[q][w]=='0'){vis[q][w]=1;t++;}if(a[q][w]=='*')return;if(q==x-1||w==y-1||q==0||w==0){if(a[q][w]=='0'){k=0;t=0;}return;}for(int i=0;i<4;i++){int tx=q+dx[i];int ty=w+dy[i];if(tx>=0&&ty>=0&&tx<x&&ty<y&&!vis[tx][ty]){dfs(tx,ty);}}
}
int main() {cin>>x>>y;for(int i=0;i<x;i++)cin>>a[i];for(int i=1;i<x;i++)for(int j=1;j<y;j++){if(a[i][j]=='0'&&!vis[i][j]){k=1;dfs(i,j);if(k)ans+=t;t=0;}}cout<<ans<<endl;return 0;
}
洛谷----P1506 拯救oibh总部相关推荐
- 洛谷P1506 拯救oibh总部 —DFS—围墙
拯救oibh总部 - 洛谷 ## 题目背景 oibh 总部突然被水淹没了!现在需要你的救援-- ## 题目描述 oibh 被突来的洪水淹没了,还好 oibh 总部有在某些重要的地方起一些围墙.用 `* ...
- 洛谷 P1506 拯救oibh总部
P1506 拯救oibh总部 题目背景 oibh总部突然被水淹没了!现在需要你的救援-- 题目描述 oibh被突来的洪水淹没了>.<还好oibh总部有在某些重要的地方起一些围墙,用*号表示 ...
- 洛谷P1506 拯救oibh总部【DFS】
题目链接:P1506 拯救oibh总部 程序说明: 深度优先搜索,和P1162填涂颜色差不多(没有区别). 参考题解:P1506 拯救oibh总部 题解 代码如下: #include <iost ...
- 洛谷 P1506 拯救oibh总部-dfs染色法
题目背景 oibh总部突然被水淹没了!现在需要你的救援-- 题目描述 oibh被突来的洪水淹没了>.<还好oibh总部有在某些重要的地方起一些围墙,用号表示,而一个封闭的号区域洪水是进不去 ...
- 洛谷 P1506 拯救oibh总部 题解(洪水填充法的模板)
目录 题目背景 题目描述 输入格式 输出格式 输入输出样例 hack: 说明/提示 总结 题目背景 oibh 总部突然被水淹没了!现在需要你的救援-- 题目描述 oibh 被突来的洪水淹没了,还好 o ...
- 洛谷P1506 拯救oibh总部 题解
题目背景 oibh总部突然被水淹没了!现在需要你的救援-- 题目描述 oibh被突来的洪水淹没了>.<还好oibh总部有在某些重要的地方起一些围墙,用号表示,而一个封闭的号区域洪水是进不去 ...
- 洛谷P1506 拯救oibh总部
题目背景 oibh总部突然被水淹没了!现在需要你的救援-- 题目描述 oibh被突来的洪水淹没了>.<还好oibh总部有在某些重要的地方起一些围墙,用*号表示,而一个封闭的*号区域洪水是进 ...
- 洛谷p1506——拯救oibh总部 Java题解 DFS
看了一下java的题解比较少,来发表一下Java AC代码.用的是DFS,染色题型. import java.util.*; public class Main{static Scanner sc=n ...
- [洛谷 P1506] 拯救oibh总部
原题传送门 蒟蒻已经菜的连垃圾DFS都不会了,练一道难题... 直接上代码.. #include<bits/stdc++.h> using namespace std; char ch; ...
最新文章
- 外链引入css有哪些方式_HTML+CSS基础(三) CSS的引入方式和CSS选择器
- oracle 授权 增删改查权限_Oracle增删改查与函数
- 5 -- Hibernate的基本用法 --5 3 改变持久对象状态的方法
- Dnn's Event Logging API
- excel换行按什么键_电脑黑屏按什么键恢复 电脑黑屏的原因和恢复方法
- 程序默认用管理员身份打开(vs2010)
- SAS学习笔记(一)如何安装SAS
- 计算机室和电子备课室管理制度,电子备课室
- 使用AirDrop将文件从iPhone或iPad传送到Mac电脑教程
- 一元线性回归Python实现
- 小米5短接点 | 小米红米高通短接9008教程视频教程 | 高通9008驱动下载 | 不拆机怎么直接进9008 | 什么线能直接进9008
- 光猫超级账号密码、宽带账号密码 获取
- 免费查看并下载知网文献
- yum安装报错No package xxx available
- there is the flag
- Python学习-小黑屋游戏
- 手把手教你PS一个科技感的系统背景图
- 聊天类APP功能测试总结
- 快速的在Adobe Illustrator中创建羊驼插图教程
- 算法回顾---贝叶斯分类器
热门文章
- 人脸识别是什么?及人脸识别的流程
- python 贴吧自动回复机-python实现微信自动回复机器人功能
- 每日一词20190315——元数据(Metadata)
- 戴尔笔记本吸入式光驱无法弹出的解决方法
- oracle 计算非工作时间(去除节假日和非工作时间)
- 【js使用百度地图】
- QCC304x系列开发教程(基础篇)之2.1-QCC3040之开发环境搭建
- OpenCV线型lineType
- 用devc++表白_惠院表白墙第423期丨晓看天色暮看云,行也思君,坐也思君
- ​脉冲星 4 月脉动 | 2.5.1 版本正式发布,多平台分享正在进行中!