【USACO2.4.2】穿越栅栏

2024-03-05 02:40
文章标签 栅栏 穿越 usaco2.4

本文主要是介绍【USACO2.4.2】穿越栅栏,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

【问题描述】

  FJ搭建了一个巨大的用栅栏围成的迷宫。幸运的是,他在迷宫的边界上留出了两段栅栏作为迷宫的出口,并且从迷宫中的任意一点都能找到一条走出迷宫的路。给定迷宫的宽 W 及长 H 和这个迷宫,然后计算从迷宫中最“糟糕”的那一个点走出迷宫所需的最少步数。

【输入格式】

第一行: W和H(用空格隔开)
第二行至第2*H+1行: 每行2*W+1个字符表示迷宫

【输出格式】

输出一个单独的整数,表示能保证牛从迷宫中任意一点走出迷宫的最小步数。

【输入样例】

5 3
+-+-+-+-+-+
|         |
+-+ +-+ + +
|     | | |
+ +-+-+ + +
| |     | 
+-+ +-+-+-+ 

【输出样例】

9   

算法:棋盘上的BFS(多源)
这个题输入有点恶心,给的不是一个正正规规的迷宫问题的迷宫而给的是迷宫的形状图,所以需要转化,把输入矩阵首行首列的坐标标号为0,那些横纵坐标为基数且自身为空格的点就是一个标准棋盘上的格子。
这里写图片描述
由于是墙障碍,设三元组a[x][y][4] 在=1时表示棋盘上点(x,y)的某个方向上有一堵墙。
又人为规定:
0: 西1: 北2: 东3: 南
再对原矩阵进行扫描标记,转化为普通的墙障碍问题,见【USACO2.4.2简单版本】
但要注意的是,由于没有给出具体的出口坐标,所以要用循环查找,但要注意特殊的点(四个角上的点不管一面无墙还是两面无墙都只存一次)
贴上代码

#include<cstdio>
#include<iostream>
#include<queue>
#include<cstring>
#include<algorithm>
#include<vector>
#define maxn 105
using namespace std;
int W,H;
struct node
{int x,y;
};
int dx[]={0,-1,0,1};
int dy[]={

这篇关于【USACO2.4.2】穿越栅栏的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

经验笔记:NAT穿越技术

NAT穿越技术经验笔记 随着互联网的普及和技术的发展,P2P(Peer to Peer,点对点)通信成为许多应用的核心功能之一。然而,网络地址转换(NAT)设备的存在常常成为实现P2P通信的一个障碍。本文旨在总结NAT穿越技术的基本原理及其配置方法,并探讨如何保障NAT穿越的安全性。 1. NAT穿越技术概述 NAT穿越技术是一种使位于不同NAT网络中的主机能够直接通信的技术。NAT(Net

FPV穿越机蜂群系统技术详解

FPV穿越机蜂群系统技术是一种结合了无人机集群控制、自主导航、通信技术和实时数据处理等先进技术的综合性系统。以下是对FPV穿越机蜂群系统技术的详细解析: 一、系统概述 FPV穿越机蜂群系统是指将多架FPV穿越机通过先进的通信和控制技术组织成一个高度协同的群体,以执行复杂多样的任务。该系统模仿了自然界中生物群体(如蜜蜂、蚂蚁)的行为模式,利用群体智能实现高效协同作业。 二、关键技术

2020年B题高穿越沙漠教社杯全国大学生数学建模竞赛题目与分析

↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑  ​ ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓

穿越Java世界的继承奇旅:从基类到子类的华丽蜕变

1.为什么要继承 2.什么是继承以及继承的方式 3.继承的一些语法 4.父类成员的访问 5.关键字super 6.关键字protected 7.关键字final 8.继承与组合 一:为什么要继承 ①代码重用:继承允许我们重用、扩展或修改父类的属性和方法,而无需重新编写相同的代码。这有助于减少代码冗余,提高代码的可维护性和可扩展性。 ②实现多态:多态是面向对象编程的三大特性之

【第51课】前后台功能点文件下载文件读取文件删除目录遍历目录穿越

免责声明 本文发布的工具和脚本,仅用作测试和学习研究,禁止用于商业用途,不能保证其合法性,准确性,完整性和有效性,请根据情况自行判断。 如果任何单位或个人认为该项目的脚本可能涉嫌侵犯其权利,则应及时通知并提供身份证明,所有权证明,我们将在收到认证文件后删除相关内容。 文中所涉及的技术、思路及工具等相关知识仅供安全为目的的学习使用,任何人不得将其应用于非法用途及盈利等目的,间接使用文章中的任何工具

无人机之穿越机基础知识

一、用途与性能 主要用于竞赛、娱乐和极限飞行,特点是速度快、机动性强、反应灵敏,能够在短时间内做出迅速的加速、转向和翻滚动作,具有极高的飞行灵活性和第一视角飞行体验(FPV )。 穿越机通常体积小,续航时间较短,宜多采用DIY装配的方式,以便个性化定制和性能优化。 二、构造复杂性 结构紧凑,着重于减重和提升动力性能,通常采用轻量化材料,配备高速无刷电机、高性能电调和小型飞控系统。 三、操

ICE协议下NAT穿越的实现

前言: 之前写了篇关于WebRTC的文章:iOS下音视频通信-基于WebRTC ,由于它是基于点对点连接的,自然而然需要NAT穿越的技术,否则消息将无法传递。 在WebRTC使用了ICE协议框架,里面提到了STUN和TURN两个协议,而NAT穿越实现就是由这两个协议共同协调完成的。 正文: 一. 首先来简单讲讲什么是NAT? 原来这是因为IPV4引起的,我们上网很可能会处在一个NAT设备

穿越时光的经典:从LeNet到ResNet,机器学习中的CNN架构进化史

在机器学习的浩瀚星空中,卷积神经网络(Convolutional Neural Networks, CNNs)无疑是最为耀眼的星辰之一,它们以其卓越的图像处理能力,在计算机视觉领域书写了无数辉煌篇章。从最初的简单架构到如今复杂而高效的模型,经典CNN架构的演变不仅见证了人工智能技术的飞速进步,也深刻影响了我们对图像理解方式的认知。本文将带您踏上一场从LeNet到ResNet的经典CNN架构进化

2054. 骑马修栅栏

代码 #include<bits/stdc++.h>using namespace std;int mp[505][505];queue<int> ans;int du[505];int n=0,m,u,v;void dfs(int i){for(int j=1;j<=n;j++){if(mp[i][j]>=1){mp[i][j]--;mp[j][i]--;dfs(j);}}an

Vulkan教程 - 12 栅栏和信号量

这一章所有东西都会整合到一起了。我们将会写一个drawFrame方法,它会被主循环调用,将三角形呈现到屏幕上。创建drawFrame方法在mainLoop的while内处理事件后调用: void mainLoop() {while (!glfwWindowShouldClose(window)) {glfwPollEvents();drawFrame();}}