C++课后习题训练记录Day203

1.练习项目 :

问题描述

小蓝有一天误入了一个混境之地。

好消息是:他误打误撞拿到了一张地图,并从中获取到以下信息:

  1. 混境之地是一个 n⋅m 大小的矩阵,其中 # 表示墙,无法通行, . 表示普通的道路, k 表示散落在地图中的钥匙。
  2. 他现在所在位置的坐标为 (A,B) ,而这个混境之地出口的坐标为 (C,D) ,当站在出口时且携带最少一把钥匙即表示可以逃离混境之地。
  3. 地图中可能存在不止一把钥匙。

坏消息是:

  1. 地图中可能没有钥匙。

小蓝可以往上下左右四个方向行走,每走一步耗时一分钟。

小蓝想知道他能否逃离这个混境之地,如果可以逃离这里,输出最少需要消耗多少时间 ,反之输出 -1 。

输入格式

第一行输入两个正整数 n,m ,表示矩阵的大小。

第二行输入四个正整数 A,B,C,D ,表示小蓝当前所在位置的坐标,以及混境之地出口的坐标。

接下来输入 n 行,每行 m 个字符,表示混境之地的地图,其中 # 表示墙,无法通行, . 表示普通的道路, k 表示散落在地图中的钥匙。

输出格式

输出数据共一行一个字符串:

  • 若小蓝可以逃离混境之地,则输出最少需要消耗多少时间 。
  • 若小蓝无法逃离混境之地,则输出 -1 。

2.选择课程

在蓝桥云课中选择题库,选择题号5000并开始练习。

3.开始练习

(1)源码 :

#include<bits/stdc++.h>

using namespace std;

const int N=1e3+10;

char mpNN;

int disbNN,diseNN;

int dx\[\]={1,-1,0,0};

int dy\[\]={0,0,1,-1};

vector<pair<int,int>>v;

int n,m,a,b,c,d,e;

void bfs(int x,int y,int dis\[\]N)

{

disxy=0;

queue<pair<int,int>>q;

q.push({x,y});

while(q.size()){

pair<int,int>h=q.front();

q.pop();

for(int i=0;i<4;i++){

int px=h.first,py=h.second;

int nx=px+dxi,ny=py+dyi;

if(nx<1||ny<1||nx>n||ny>m)continue;

if(mpnxny=='#')continue;

if(disnxny>dispxpy+1){

q.push({nx,ny});

disnxny=dispxpy+1;

}

}

}

}

int main()

{

ios::sync_with_stdio(0),cin.tie(0),cout.tie();

cin>>n>>m;

cin>>a>>b>>c>>d;

int tag=0;

for(int i=1;i<=n;i++){

for(int j=1;j<=m;j++){

cin>>mpij;

if(mpij=='k')tag=1;

}

}

if(!tag){

cout<<-1<<'\n';

return 0;

}

memset(disb,0x3f3f3f3f,sizeof(disb));

memset(dise,0x3f3f3f3f,sizeof(dise));

bfs(a,b,disb),bfs(c,d,dise);

int step=0x3f3f3f3f;

for(int i=1;i<=n;i++){

for(int j=1;j<=m;j++){

if(disbij=='k')

step=min(step,disbij+diseij);

}

}

if(step==0x3f3f3f3f)cout<<-1<<'\n';

else cout<<step<<'\n';

return 0;

}

(2)检验结果

对此代码进行检验,检验后无报错,运行此代码,运行结果正确。

(3)练习心得:

注意每段代码末尾的分号是否存在 ,如不存在则需即使补充;输入法是否切换为英语模式;语法是否错误。

相关推荐
中科三方18 分钟前
IPv6检测常见问题:AAAA记录检测不通过是什么原因?
开发语言·php
沫璃染墨1 小时前
从零入门计算机网络系列(十一):HTTP协议进阶——从重定向原理到GET/POST与Fiddler抓包
linux·服务器·开发语言·网络·c++·tcp/ip·html
刚入门的大一新生1 小时前
Linux-线程互斥
java·开发语言
香芋芋圆2 小时前
iD-editor 详解|OSM官方在线编辑器,基于D3.js的轻量地图编辑器
开发语言·javascript·编辑器
揽星河..2 小时前
【C语言】分支和循环
c语言·c++·算法
小熊恋旧2 小时前
Python 面向对象编程:方法、属性、继承与多态详解
开发语言·python
云边云科技_云网融合2 小时前
面向汽车零部件制造业场景的解决方案 | 70 秒:一台车下线的时间里,藏着五张网
开发语言·汽车·php
Evand J2 小时前
【PMSM滤波例程2】PMSM未知负载转矩观测EKF。MATLAB例程(负载增广EKF与实际仿真结果)。附下载链接
开发语言·matlab·电机
will_net3 小时前
apollo 站点部署&C#接入
开发语言·c#·apollo
晗夜未央3 小时前
任务队列反复失败,先分清重试、阻塞和结果待核对
开发语言·javascript