标签:dfs,bfs
时间限制: 1 Sec 内存限制: 128 MB
题目描述
迷宫的管理员们决定在新开始的季节里使用新的墙纸。出于这个目的他们需要一个程序来计算迷宫内墙壁的面积。这就是你即将要做的工作。
我们把这个迷宫用一个NxN(3<=N<=33)的矩阵表示。一些矩阵单元包含一个“.”(这代表一个空的方块),另一些矩阵单元包含一个“#”(这代表一个用巨石砌成的石墙占据的方块)。全部方块的大小都为3*3平方米。

墙壁由迷宫的四周(除了作为迷宫出入口的左上角和右下角以外)以及那些标记为“#”的矩阵单元构成,除此之外没有其他的墙。在输入的矩阵里左上角和右下角永远是一个“.”。你的任务是计算迷宫里可见部分的墙壁的面积。换句话说,就是对迷宫的游客来说墙壁表面可见的部分。注意在两块相邻的石块之间没有空隙,即使两块石块在转角处相接触,我们都认为它们是相邻的。看看图示的例子:迷宫中可见的墙壁都用加粗的线条来描画。所有墙壁的高度都是三米。
输入
输入的第一行包含一个数字N。接下来的N行每行都包含有N个字符。每行描述了迷宫矩阵的一行。每行都只有“.”、“#”这两个字符并都以一个换行符结束。输入里没有任何的空格
输出
你的程序必须输出一个整数,即所需要的壁纸的准确面积。
样例输入
5

…##
…#…
…###

样例输出
198
思路:
用一个数组vis[i][j]位置是".“还是”#",需要前后,两次遍历才能遍历完全。
其实就是把每个点遍历一遍,如果有墙和它相邻面积就加一,最后x9。
如果不好理解的话,建议把vis数组输出看看。

#include <iostream>
#include <algorithm>
#include <cstdio>
#include <cstring>
#include <math.h>
#include <vector>
#include <queue>
#include <ctime>
#define ll long long
#define inf 0x3f3f3f3f
#define N 35
using namespace std;
int n,i,j,ans=-4;
char str[N][N]= {'\0'};
char s[N][N]= {'\0'};
int vis[N][N];
int d1[4]= {-1,1,0,0};
int d2[4]= {0,0,-1,1}; //up,down,left,right
void dfs(int x,int y)
{if(x>n||y>n||x<1||y<1||vis[x][y]==1||s[x][y]=='#')return ;vis[x][y]=1;for(int i=0; i<4; i++){int a=x+d1[i];int b=y+d2[i];dfs(a,b);}
}
int main()
{scanf("%d",&n);for(i=1; i<=n; i++){scanf("%s",str[i]);for(j=1; j<=n; j++)s[i][j]=str[i][j-1];}memset(vis,0,sizeof(vis));dfs(1,1);dfs(n,n);for(i=1;i<=n;i++){for(j=1;j<=n;j++){if(vis[i][j]){for(int k=0;k<4;k++){int x=i+d1[k];int y=j+d2[k];if(!vis[x][y])ans++;}}}}printf("%d",ans*9);return 0;
}

UPC(混合1)问题 D: 迷宫相关推荐

  1. 【浙大脑机接口实验室探秘】人类与AI控制大鼠走出迷宫,C10背负的混合智能未来(视频)...

    (文/杨静 )我对浙江大学的脑机接口研究长久以来抱有朝圣般的浓厚兴趣,主要是受浙江大学计算机学院潘纲教授的影响.他在一次演讲里展示了脑控大鼠在一名研究人员的脑电波控制下,快速走迷宫的神奇现场,这只大鼠 ...

  2. 【upc 15305】 迷宫(DFS+BFS)

    题目描述 迷宫的管理员们决定在新开始的季节里使用新的墙纸.出于这个目的他们需要一个程序来计算迷宫内墙壁的面积.这就是你即将要做的工作. 我们把这个迷宫用一个NN(3<=N<=33)的矩阵表 ...

  3. UPC 2020年夏混合个人训练第五十场【DEG】

    问题 D: 01矩阵 时间限制: 1 Sec 内存限制: 128 MB 样例输入 2 2 1 1 样例输出 10 提示 对于20%的数据:n,m,x,y≤3 对于40%的数据:n,m,x,y≤70 对 ...

  4. UPC 2020年夏混合个人训练第八十一场

    HDXM,给点支持吧啊,练了一晚上的科三了,十点多才到家,每天还要早起准备各种东西,也是有点辛苦了. 问题 A: 能量消耗 cost 题目描述 Rainy7 的一生注定不平凡. 在一次睡梦中,她梦见自 ...

  5. UPC——2020年春混合个人训练第二十五场(FG)

    太菜了只能写写签到 问题 F: 求生大作战 时间限制: 1 Sec 内存限制: 128 MB [提交] [状态] 题目描述 PinkRabbit 又趁 Czhou 不注意划水了,今天他打开了求生大作战 ...

  6. UPC 2020年夏混合个人训练第六十四场【ACDG】

    问题 A: 纽约 题目描述 印度洋暖流温润着纽约,四季丰沛的雨水造就了一望无际的大草原.蒙古包是纽约最独特的一道风景线,每至二月中旬,纽约的土著傣族人民又开始半年一度的转场了. 由于牲畜和行李过多,牧 ...

  7. UPC——2020年春混合个人训练第二十四场(DEFG)

    D.坏掉的手表 时间限制: 1 Sec 内存限制: 128 MB [提交] [状态] 题目描述 有个手表坏了,时间为HH:MM,你要把这个不合法的时间变为合法,请求出最少要动几位 输入 第一行表示手表 ...

  8. UPC 2020年夏混合个人训练第七十五场

    问题 A: building 时间限制: 1 Sec 内存限制: 128 MB 题目描述 WOW是BLIZZARD公司开发的一款网络游戏,游戏的背景是处在一个叫做艾泽拉斯的神秘大陆上的.在这片陆地上生 ...

  9. UPC 2020年春混合个人训练第十九场

    问题 A: 新的世界 时间限制: 1 Sec 内存限制: 128 MB 题目描述 小学五六年级的乔猫是一个喜欢不务正业写游戏的孩纸--他曾经模仿著名的沙盒游戏<Minecraft>做过一个 ...

最新文章

  1. Node.js和NoSQL开发比特币加密货币应用程序(下)
  2. Ubuntu21.04开机自动挂载Windows硬盘分区
  3. boolean 默认_MySQL数据类型测试:BOOLEAN、TINYINT测试数据总结(第八节)
  4. mysql四种隔离级别知乎_详解MySQL事务的四大特性和隔离级别
  5. Kafka Shell 基本操作
  6. 大学生创新项目认真投一篇中文核心的坎坷故事
  7. ifttt.com:让你的网络行为能引发连锁反应
  8. linq 学习日记-select
  9. 【干货】神策数据朱德康:用户中台建设实践解析(附PPT下载链接)
  10. 老人为啥怒砸30辆车
  11. 17计算机病毒,计算机病毒的病毒的分类川大《计算机文化基础0008》17秋在
  12. 基于神经网络的倒立摆控制系统设计
  13. 杭州电子科技大学计算机学硕复试,杭州电子科技大学2020年研究生复试常见问题解答...
  14. 2020年IT行业薪资报告
  15. 医学人工智能读书会与黄智生教授简历(公号回复“医学AI读书会”下载PDF资料,欢迎转发、赞赏、支持科普)
  16. 金融套利策略:理解统计套利的工作原理
  17. python算程序员吗_2019为什么有人说Python程序员是假的程序员?
  18. 计算机网络不同层中用于将网络互连的中间设备——转发器、网桥(桥接器)、路由器、网关
  19. freemarker模板生成pdf文件
  20. 【引用】DMA内存申请--dma_alloc_coherent

热门文章

  1. 字体分享Lucida Sans Typewriter
  2. php获取url地址的方法,PHP获取当前页面完整url地址的方法
  3. 物联那点事儿之DS18B20自制网络温度计(arduino+点灯科技篇)
  4. Spring-Spring Web项目中配置使用Log4j 2
  5. kaggle 信用卡数据集(约28万行)
  6. 开讲啦:Python3进阶实战
  7. C++ 泛型编程/模板 泛函编程/Lambda/λ演算
  8. Linux修改用户名后无法登入系统(乌班图)
  9. 极光开发者周刊【No.0625】
  10. 人脸识别时,一定要穿衣服!要不然……