题目背景

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总部相关推荐

  1. 洛谷P1506 拯救oibh总部 —DFS—围墙

    拯救oibh总部 - 洛谷 ## 题目背景 oibh 总部突然被水淹没了!现在需要你的救援-- ## 题目描述 oibh 被突来的洪水淹没了,还好 oibh 总部有在某些重要的地方起一些围墙.用 `* ...

  2. 洛谷 P1506 拯救oibh总部

    P1506 拯救oibh总部 题目背景 oibh总部突然被水淹没了!现在需要你的救援-- 题目描述 oibh被突来的洪水淹没了>.<还好oibh总部有在某些重要的地方起一些围墙,用*号表示 ...

  3. 洛谷P1506 拯救oibh总部【DFS】

    题目链接:P1506 拯救oibh总部 程序说明: 深度优先搜索,和P1162填涂颜色差不多(没有区别). 参考题解:P1506 拯救oibh总部 题解 代码如下: #include <iost ...

  4. 洛谷 P1506 拯救oibh总部-dfs染色法

    题目背景 oibh总部突然被水淹没了!现在需要你的救援-- 题目描述 oibh被突来的洪水淹没了>.<还好oibh总部有在某些重要的地方起一些围墙,用号表示,而一个封闭的号区域洪水是进不去 ...

  5. 洛谷 P1506 拯救oibh总部 题解(洪水填充法的模板)

    目录 题目背景 题目描述 输入格式 输出格式 输入输出样例 hack: 说明/提示 总结 题目背景 oibh 总部突然被水淹没了!现在需要你的救援-- 题目描述 oibh 被突来的洪水淹没了,还好 o ...

  6. 洛谷P1506 拯救oibh总部 题解

    题目背景 oibh总部突然被水淹没了!现在需要你的救援-- 题目描述 oibh被突来的洪水淹没了>.<还好oibh总部有在某些重要的地方起一些围墙,用号表示,而一个封闭的号区域洪水是进不去 ...

  7. 洛谷P1506 拯救oibh总部

    题目背景 oibh总部突然被水淹没了!现在需要你的救援-- 题目描述 oibh被突来的洪水淹没了>.<还好oibh总部有在某些重要的地方起一些围墙,用*号表示,而一个封闭的*号区域洪水是进 ...

  8. 洛谷p1506——拯救oibh总部 Java题解 DFS

    看了一下java的题解比较少,来发表一下Java AC代码.用的是DFS,染色题型. import java.util.*; public class Main{static Scanner sc=n ...

  9. [洛谷 P1506] 拯救oibh总部

    原题传送门 蒟蒻已经菜的连垃圾DFS都不会了,练一道难题... 直接上代码.. #include<bits/stdc++.h> using namespace std; char ch; ...

最新文章

  1. 外链引入css有哪些方式_HTML+CSS基础(三) CSS的引入方式和CSS选择器
  2. oracle 授权 增删改查权限_Oracle增删改查与函数
  3. 5 -- Hibernate的基本用法 --5 3 改变持久对象状态的方法
  4. Dnn's Event Logging API
  5. excel换行按什么键_电脑黑屏按什么键恢复 电脑黑屏的原因和恢复方法
  6. 程序默认用管理员身份打开(vs2010)
  7. SAS学习笔记(一)如何安装SAS
  8. 计算机室和电子备课室管理制度,电子备课室
  9. 使用AirDrop将文件从iPhone或iPad传送到Mac电脑教程
  10. 一元线性回归Python实现
  11. 小米5短接点 | 小米红米高通短接9008教程视频教程 | 高通9008驱动下载 | 不拆机怎么直接进9008 | 什么线能直接进9008
  12. 光猫超级账号密码、宽带账号密码 获取
  13. 免费查看并下载知网文献
  14. yum安装报错No package xxx available
  15. there is the flag
  16. Python学习-小黑屋游戏
  17. 手把手教你PS一个科技感的系统背景图
  18. 聊天类APP功能测试总结
  19. 快速的在Adobe Illustrator中创建羊驼插图教程
  20. 算法回顾---贝叶斯分类器

热门文章

  1. 人脸识别是什么?及人脸识别的流程
  2. python 贴吧自动回复机-python实现微信自动回复机器人功能
  3. 每日一词20190315——元数据(Metadata)
  4. 戴尔笔记本吸入式光驱无法弹出的解决方法
  5. oracle 计算非工作时间(去除节假日和非工作时间)
  6. 【js使用百度地图】
  7. QCC304x系列开发教程(基础篇)之2.1-QCC3040之开发环境搭建
  8. OpenCV线型lineType
  9. 用devc++表白_惠院表白墙第423期丨晓看天色暮看云,行也思君,坐也思君
  10. ​脉冲星 4 月脉动 | 2.5.1 版本正式发布,多平台分享正在进行中!