【upc 15305】 迷宫(DFS+BFS)

(JZOJ)比赛总结 2021 03 20 文章目录(JZOJ)比赛总结 2021 03 20开头:T1:题面:输入:输出:做法:T2:题面:输入:输出:做法:T3:题面:输入:输出:做法:T4:题面:输入:输出:做法:总结:????大家早日AC! (JZOJ)比赛总结 2021 03 20 开头: ​ 这次考试,刚开始,我就感冒????回家了,真的惨,只好回家休养,(我的朋友们,再见啦!) ​ 星期一 ​ 我回来啦!!! ​ 在我的不断努力(moyu)后,我,现在给大家来个总结!! T1: 阅读详情
题目描述

迷宫的管理员们决定在新开始的季节里使用新的墙纸。出于这个目的他们需要一个程序来计算迷宫内墙壁的面积。这就是你即将要做的工作。

我们把这个迷宫用一个NN(3<=N<=33)的矩阵表示。一些矩阵单元包含一个“.”(这代表一个空的方块),另一些矩阵单元包含一个“#”(这代表一个用巨石砌成的石墙占据的方块)。全部方块的大小都为33平方米。
在这里插入图片描述
墙壁由迷宫的四周(除了作为迷宫出入口的左上角和右下角以外)以及那些标记为“#”的矩阵单元构成,除此之外没有其他的墙。在输入的矩阵里左上角和右下角永远是一个“.”。你的任务是计算迷宫里可见部分的墙壁的面积。换句话说,就是对迷宫的游客来说墙壁表面可见的部分。注意在两块相邻的石块之间没有空隙,即使两块石块在转角处相接触,我们都认为它们是相邻的。看看图示的例子:迷宫中可见的墙壁都用加粗的线条来描画。所有墙壁的高度都是三米。

输入

输入的第一行包含一个数字N。接下来的N行每行都包含有N个字符。每行描述了迷宫矩阵的一行。每行都只有“.”、“#”这两个字符并都以一个换行符结束。输入里没有任何的空格

输出

你的程序必须输出一个整数,即所需要的壁纸的准确面积。

样例输入
5
.....
...## 
..#.. 
..### 
.....
	
样例输出
198
思路:

可以通过以(1,1)为起点来搜索确定墙壁的数量 = 边界 + “#” - 4(减4是因为(1,1)和(n,n)点处的边界不算墙壁)
这里也会有走不通的情况,特判一下,再倒着来一次搜索即可
(特别感谢ybl大佬的倾情赞助)
DFS代码:

#include<iostream>
#include<string>
#include<cmath>
#include<vector>
#include<queue>
#include<cstring>
#include<algorithm>
#define ll long long
#define INF 0x3f3f3f3f
using namespace std;
const int N=1e5+10;
const int d[4][2]={0,1,0,-1,-1,0,1,0};
int n,ans;
char mp[35][35];
bool vis[35][35];
void dfs(int x,int y)
{
    if(vis[x][y]==1)
        return ;
    if(x<=0||x>n||y<=0||y>n||mp[x][y]=='#') //墙壁
    {
        ans++;
        return ;
    }
    vis[x][y]=1;
    for(int i=0;i<4;i++)
    {        
        int xx=x+d[i][0];        
        int yy=y+d[i][1];        
        dfs(xx,yy);    
    }
}
int main()
{     
    cin>>n;
    for(int i=1;i<=n;i++)   
    {
        for(int j=1;j<=n;j++)
        {
            cin>>mp[i][j];  
        }
    }                       
    dfs(1,1);
    if(!vis[n][n]) dfs(n,n); //判断需不需要再来一次
    cout<<9*(ans-4);//数量-4
    return 0;
}

BFS代码:

#include<iostream>
#include<string>
#include<cmath>
#include<vector>
#include<queue>
#include<cstring>
#include<algorithm>
#define ll long long
#define INF 0x3f3f3f3f
using namespace std;
const int N=1e5+10;
const int d[4][2]={0,1,0,-1,-1,0,1,0};
int n,ans;
char mp[35][35];
bool vis[35][35];
struct node
{
    int x;
    int y;
};
void bfs(int a,int b)
{
    queue<node>q;
    node temp;
    temp.x=a;
    temp.y=b;
    q.push(temp);
    vis[a][b]=1;
    while(q.size())
    {
        node cur=q.front();
        q.pop();
        for(int i=0;i<4;i++)
        {
            int xx=cur.x+d[i][0];
            int yy=cur.y+d[i][1];
            if(vis[xx][yy]==1) 
                continue;
            if(xx<=0||xx>n||yy<=0||yy>n||mp[xx][yy]=='#')
            {
                ans++;
                continue;
            }
            vis[xx][yy]=1;
            q.push({xx,yy});
        }
    }
}
int main()
{
    cin>>n;
    for(int i=1;i<=n;i++)
    {
        for(int j=1;j<=n;j++)
        {
            cin>>mp[i][j];
        }
    }
    bfs(1,1);
    if(!vis[n][n]) bfs(n,n);
    cout<<(ans-4)*9;
    return 0;
}
人工智能技术基础系列之:迁移学习 作者:禅与计算机程序设计艺术 1.背景介绍 随着深度学习和神经网络的快速发展,越来越多的应用场景需要处理大量的数据和复杂的任务。然而,由于计算资源、存储空间等条件的限制,传统的人工智能方法往往不能满足实际需求。因此,为了提高效率和降低成本,研究人员提出了迁移学习的概念。本篇文章将详细介绍迁移学习的基 阅读详情

相关推荐

跨越移植陷阱:ESP-IDF下LVGL与ILI9341的组件化集成与常见避坑指南

本文详细解析了在ESP-IDF环境下将LVGL图形库与ILI9341显示屏驱动进行组件化集成的完整流程。重点介绍了移植过程中的关键配置策略、内存管理优化技巧以及常见问题解决方案,帮助开发者有效规避内存溢出、显示异常等典型陷阱,实现高效稳定的嵌入式GUI开发。

yhn456789的博客 623

2020-4-26

请小伙伴们对自己AC的题目进行标记,注意每人只能标记一次!不知道的不要标记,恶意标记者将回收账号!!! 问题 D: 迷宫 时间限制: 1 Sec内存限制: 128 MB [提交] [状态] 题目描述 迷宫的管理员们决定在新开始的季节里使用新的墙纸。出于这个目的他们需要一个程序来计算迷宫内墙壁的面积。这就是你即将要做的工作。 我们把这个迷宫用一个N*N(3<=N<=3...

QXK_Jack的博客 524

若依开源框架(分离版)在人大金仓数据库下使用

对于甲方业务特殊要求,使用国产化数据库人大金仓,作为项目主要存储。这里以若依开源框架整合人大金仓为例,演示如何在真实项目中引入人大金仓。

🐱喵测实验室 5942

URAL 1033|Labyrinth|搜索

原文地址:http://acm.timus.ru/problem.aspx?space=1&num=1033题目Labyrinth的管理层决定用新装壁纸迎接新季节的到来。因此他们需要一个程序计算Labyrinth里面的墙壁的面积,这个工作就交给你的大兄弟!Labyrinth用一个N×N(3≤N≤33)N\times N(3\leq N\leq 33)的矩阵表示。有些矩阵元素为字符’.’,表示空地,’

とある黄鱼のOIブログ 824

Windows系统的Mamba环境配置详细教程(状态空间模型)

causal_conv1d也是安装mamba的依赖必须库。安装完成后,通过pip list可以查看到安装的库。Triton是安装mamba的依赖,需要先安装。上述工作准备好后,按下面步骤安装。直接根据离线文件安装即可。是自己的虚拟环境名字。

2301_77831163的博客 3676

智能挂锁软件需求规格说明书(SRS)

智能挂锁系统SmartPadlockV1.0是一款融合蓝牙通信、指纹识别和远程控制技术的便携式安防设备。系统由设备端、移动App和云平台三部分组成,支持蓝牙配对(10米内)、指纹识别、OTP一次性密码等多种开锁方式,响应时间<1.5秒。产品采用SM2/SM4加密技术保障安全,日均20次使用下续航达180天,兼容iOS13+/Android8.0+系统。功能包括设备绑定、远程授权、开锁记录查询和OTA固件升级,符合个人信息保护法规要求,适用于仓储、快递柜等多场景应用。

moton2017的博客 2112

C语言实现迷宫(附带源码)

在本项目中,我们使用了C语言实现了一个简单的迷宫问题,并通过深度优先搜索(DFS)算法寻找从起点到终点的路径。迷宫问题不仅能够展示回溯算法的应用,还能帮助我们理解递归与搜索算法的基本原理。

欢迎来到我的博客!这里是一个专注于计算机技术的分享平台,涵盖编程开发、算法研究、系统架构、软件工程等多个领域。无论你是初学者还是资深开发者,都能在这里找到有价值的内容。 1010

记录一次Spring Framework 漏洞修复的过程

摘要:针对Spring Boot 2.6.13项目在阿里云漏洞扫描中发现的Spring Framework目录遍历漏洞(CVE-2024-38819),首先分析了漏洞成因,确认5.3.23版本存在风险。解决方案包括升级Spring Boot至2.7.18(对应Spring Framework 5.3.41)或6.0+版本,但后者需JDK17支持。临时方案通过配置HttpFirewall限制特殊字符,最终借助阿里云防护服务暂时解决问题。建议长期解决方案仍需升级至安全版本(Spring Boot 6.1.14或

极客栈 1487

AOJ.869 迷宫

 Time Limit: 1000 ms   Memory Limit: 50 MB Total Submission: 21   Submission Accepted: 11 Judge By Case Description 迷宫的管理员们决定在新开始的季节里使用新的墙纸。出于这个目的他们需要一个程序 来计算迷宫内墙壁的面积。这就是你即将要做的工作。 我们把这个迷宫用一个

qq_36392612的博客 621

lvgl 9虚拟键盘控件 (lv_keyboard) 使用指南

是 LittlevGL 提供的一个虚拟键盘控件,适用于在图形界面中输入文本。与按钮矩阵类似,虚拟键盘预定义了多个键位布局,支持多种模式和自定义键位映射,能够满足各种文本输入需求。通过与文本区域 (Text Area) 的结合,键盘能够自动将输入的字符传送到指定区域。控件是 LittlevGL 提供的强大虚拟键盘解决方案,适用于任何需要文本输入的界面。通过预定义的键盘模式、自定义键位映射和文本区域自动填充功能,可以大大提升用户输入体验。无论是在嵌入式系统的用户界面中,还是在其他需要虚拟键盘的应用中,

m0_62599305的博客 2185

VS code 调试显示preLaunchTask“g++“已终止,退出代码为-1。 生成‘... .exe‘文件错误

总结: 以后每个工程都需要按照这样的流程:创建一个.c/.cpp文件 -> F5运行 -> 配置tasks.json文件-> launch.json文件 -> 运行

qq_45151652的博客 2513

UPC(混合1)问题 D: 迷宫

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

weixin_45883286的博客 336

MuJoCo 入门教程(四)建模

在 MJCF 中,一个体可以包含多个关节,因此无需引入虚拟体来创建复合关节。相反,只需在同一主体中定义构成所需复合关节的所有原始关节即可。例如,可以使用两个滑块和一个铰链来模拟在平面内运动的肢体。其他 MJCF 元素可以在嵌套的主体元素所创建的树中定义,特别是关节、几何体、场地、摄像机、灯光。当一个元素被定义在一个肢体内时,它就固定在该肢体的局部坐标系上,并始终随其移动。涉及多个机构或根本不涉及机构的元素,将在运动树之外的单独部分中定义。

机器人控制与仿真应用 4163

URAL/1033 迷宫

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

SCaryon的博客 700

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

新的工作历程即将启动

在经过上周和本周一到迅雷的两轮试后,周二收到了迅雷游戏的offer,工资和我期望的有点小差距。迅雷公司几乎是我在接触互联网来就开始接触到其产品的了。对公司也很充满憧憬的。准备下周一到公司入职了。迅雷游戏,对我来说又是一个新的行业,正如迅雷人力资源说的一样,你前面三家公司,分别是三个不同的行业,现在到迅雷,又是一个新的行业。说起行业,其实对技术人员来说应该不是问题,因为很多东西原理上一样的,只是开始

走出憧憬的专栏 760

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

Aoj 0033 Ball【dfs枚举】

図のように二股に分かれている容器があります。1 から10 までの番号が付けられた10 個の玉を容器の開口部 A から落とし、左の筒 B か右の筒 C に玉を入れます。板 D は支点 E を中心に左右に回転できるので、板 D を動かすことで筒 B と筒 C のどちらに入れるか決めることができます。開口部 A から落とす玉の並びを与えます。それらを順番に筒 B 又は筒 Cに入れていきます。このとき、筒...

为AC千千万万遍 427

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

Ural 1033

<br />题意:求游客进入迷宫能看到的墙的面积<br /><br /> WA点:注意两个入口可能不连通,所以两边都要搜索<br /> <br />代码:<br /> <br />//============================================================================ // Name : Test.cpp // Author : // Version : // Copyright : Your

heartnheart的专栏 647

AOJ 0033 Ball 深度搜索水题

题目链接 #include &lt;bits/stdc++.h&gt; using namespace std; int N; int ar[10]; bool dfs(int i,int L,int R) { if(i==10) return true; if(ar[i]&lt;L&amp;&amp;ar[i]&lt;R) return false...

ChasingTheFreeWind 253

UVA784 UVALive5280 Maze Exploration【DFS】

A maze of rectangular rooms is represented on a two dimensional grid as illustrated in figure 1a. Each point of the grid is represented by a character. The points of room walls are marked by the same ...

海岛Blog 506

写给2016年开始步入开发工作的新宝宝们

写这篇文章的目的很明了,希望你们成为新手中的佼佼者。比如,如果你读了这篇文章,能够顺利转正,或能够成为上级中意的新人,那我目的达到了。 1.心态,成为听话的宝宝 作为新人,其实上级不指望你能做出什么东西来,所以你要听话,要非常听话,把他要求的工作努力做好。为什么要这样的呢,第一,你开发经验还不足,第二,你对团队和公司的情况不了解。不然,不听话,又没有做出什么东西,这样的人,上级基本不要

潘才海的博客 513

那迷们

是那迷就一起贴那姐吧!偶是独爱那小萌!                                                                                      ~~那迷们                                                                                        

u011750405的专栏 667

2020ACM俱乐部后备营个人训练赛第七、八、九场

第七场 B 代码 #include<stdio.h> int n,a[60][60],pos[60]; char s[60][60]; int main( ) { scanf("%d",&n); for(int i=1;i<=n;i++) scanf("%s",s[i]+1); for(int i=1;i<=n;i++) { for(int j=1;j<=n-i+1;j++) {

Cosmic_Tree的博客 2853
上一篇: upc 砝码(dfs+前缀和)
下一篇: PTA 时钟类的--运算符重载
Cosmic_Tree
博客等级 码龄7年 134粉丝 337原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值