计蒜客第三章:蒜头君回家

2023-12-03 18:48

本文主要是介绍计蒜客第三章:蒜头君回家,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

计蒜客习题:蒜头君回家

题目

在这里插入图片描述
在这里插入图片描述

样例

在这里插入图片描述

题解

两次BFS打表,第一次从起点到钥匙,第二次从终点到钥匙,找出两个表相同位置加和最小的值。

代码

#include<iostream>
#include<queue>
#include<cstring>
using namespace std;
int n,m,xx[7]={0,0,-1,1},num[2005][2005],yy[7]={1,-1,0,0},f=1,mi=5000000,v[2005][2005],key[2005][2005];
char mp[2005][2005];
struct point
{int x, y;point(int xx,int yy){x=xx;y=yy;}
};
void bfs(int sx,int sy)
{memset(v,0,sizeof(v));queue<point> q;q.push(point(sx,sy));v[sx][sy]=1;while(!q.empty()){int x=q.front().x;int y=q.front().y;q.pop();for(int i=0;i<4;i++){int tx=x+xx[i];int ty=y+yy[i];if(tx<1||tx>n||ty<1||ty>m) continue;if(!v[tx][ty]&&mp[tx][ty]!='#'){v[tx][ty]=1;if(!f) num[tx][ty]=num[x][y]+1;else key[tx][ty]=key[x][y]+1;q.push(point(tx, ty));}}}return;
}int main()
{int sx,sy,ex,ey;cin>>n>>m;for(int i=1;i<=n;i++)for(int j=1;j<=m;j++){cin>>mp[i][j];if(mp[i][j]=='S') {sx=i;sy=j;}if(mp[i][j]=='T') {ex=i;ey=j;}}bfs(sx,sy);f=0;bfs(ex,ey);for(int i=1;i<=n;i++)for(int j=1;j<=m;j++)if(mp[i][j]=='P'&&num[i][j]&&key[i][j]&&mi>num[i][j]+key[i][j]) mi=num[i][j]+key[i][j];cout<<mi;return 0;
}

这篇关于计蒜客第三章:蒜头君回家的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

计蒜客 Skiing 最长路

In this winter holiday, Bob has a plan for skiing at the mountain resort. This ski resort has MM different ski paths and NN different flags situated at those turning points. The ii-th path from the

计蒜客 Half-consecutive Numbers 暴力打表找规律

The numbers 11, 33, 66, 1010, 1515, 2121, 2828, 3636, 4545 and t_i=\frac{1}{2}i(i+1)t​i​​=​2​​1​​i(i+1), are called half-consecutive. For given NN, find the smallest rr which is no smaller than NN

nyoj 1072 我想回家

一道相当题目描述相当扯的题。 这道题目的描述最后说的是求出到达最后一个点的最短距离,所以输入数据最后输入的城堡的坐标是没用的。 就是先求出两点之间的距离,若不大于村落间距离,并且不大于最后的距离限制 l ,则在两点间建边。 最后任意方法求出最短路即可。 #include <iostream>#include<stdio.h>#include<vector>#include<

第三章 UML类图简介(设计模式笔记)

第三章 UML类图简介 3.1类 3.2接口 名字层必须有<> 3.3 泛化(继承)关系 箭头终点端指向父类(空心三角形) 3.4 关联(组合1)关系 B类是A类的成员变量 ,称A关联B。 箭头终点端指向B 3.5 依赖(组合2)关系 B类是A类的某个方法的参数 ,称A依赖B。 箭头终点端指向B(虚线) 3.6 实现关系 箭头终点端指向接口(虚线,空心

统计学(贾俊平)学习笔记--第三章、 数据预处理

数据预处理无论是从数据分类分析、数据信息抽取、数据挖掘、模型建立等方面都是需要的,也是数据工作者最开始招手做的,而统计学(贾俊平)中从理论的角度讲解了数据预处理的概念和方法吗,在此将主要要点列举如下,供有心人参考学些。       数据的预处理是在对数据分类或分组之前所做的必要处理,内容包括数据的审核、筛选、排序等。          审核就是检查数据中是否有错误。从完整性和准

第三章 《栖息地》

在第一款商业化的MUD《凯斯迈之岛》正式运营的同一年,世界上第一款包月计费的网络游戏也诞生了。那一年里,马克·雅各布斯(Mark Jacobs)的AUSI公司推出了文本MUD游戏《阿拉达斯》(Aradath),他将服务器架设在了自己的家中,并安装了8条电话线来为玩家提供接入服务,想要玩这款游戏的玩家每月需要向AUSI支付40美元——这就是最早的包月形式。在后面的故事里,马

React第三章(tsx语法入门 )

tsx语法入门 FAQ tsx跟jsx有什么区别 答: 基本没有没有区别只是在jsx语法上增加了类型。 jsx是什么? 答:jsx是js的语法扩展,允许在js中编写html代码。 例如:const fn = () => <div>小满是谁?没听说过</div> 语法编写 使用tsx绑定变量{value} 绑定class需要用className function App()

【操作系统原理】第三章——进程线程模型(上)

目录 一、多道程序设计 1.1程序顺序执行 1.2多道程序设计 1.3程序的并发执行 二、进程的基本概念 2.1进程的概念 2.2进程的特性 2.3进程优先级 三、进程状态的转换 3.1三状态进程模型 3.2五状态进程模型 3.3七状态进程模型 🌈嗨!我是Filotimo__🌈。很高兴与大家相识,希望我的博客能对你有所帮助。 💡本文由Filotimo__✍️原创,首发于CSDN📚。

第三章 需求工程简记

第三章  需求工程 软件需求的定义: (1)用户解决问题或达到目标所需条件或能力。  (2)系统或系统部件要满足合同、标准、规范或其它正式规定文档所需具有的条件或权能。  (3)一种反映上面(1)或(2)所述条件或权能的文档说明。 软件需求包括三个不同的层次:业务需求、用户需求和功能需求—也包括非功能需求。 1.业务需求( business re

第三章 多层次的存储器笔记简记

第三章 多层次的存储器 1.存储器的分类 存储器分类标准: (1)存储介质:半导体存储器和磁表面存储器;(按存储介质) (2)存取方式:随机存储器和顺序存储器;(按存取方式) (3)存储内容可变性:只读存储器和随机读写存储器;(按读写功能) (4)信息易失性:易失性存储器和非易失性存储器;(按信息的可保存性) (5)系统中的作用:可分为内部存储器和外