写起来比较复杂的深搜题目
年轻的拉尔夫开玩笑地从一个小镇上偷走了一辆车,但他没想到的是那辆车属于警察局,并且车上装有用于发射车子移动路线的装置。
那个装置太旧了,以至于只能发射关于那辆车的移动路线的方向信息。
编写程序,通过使用一张小镇的地图帮助警察局找到那辆车。程序必须能表示出该车最终所有可能的位置。
小镇的地图是矩形的,上面的符号用来标明哪儿可以行车哪儿不行。. 表示小镇上那块地方是可以行车的,而符号 X 表示此处不能行车。拉尔夫所开小车的初始位置用字符的 * 表示,且汽车能从初始位置通过。
汽车能向四个方向移动:向北(向上),向南(向下),向西(向左),向东(向右)。
拉尔夫所开小车的行动路线是通过一组给定的方向来描述的。在每个给定的方向,拉尔夫驾驶小车通过小镇上一个或更多的可行车地点。
输入格式
输入文件的第一行包含两个用空格隔开的自然数 R 和 C,1≤R≤50,1≤C≤50,分别表示小镇地图中的行数和列数。
以下的 R 行中每行都包含一组 C 个符号(. 或 X 或 *)用来描述地图上相应的部位。
接下来的第 R+2 行包含一个自然数 N,1≤N≤1000,表示一组方向的长度。
接下来的 N 行幅行包含下述单词中的任一个:NORTH
(北)、SOUTH
(南)、WEST
(西)和 EAST
(东),表示汽车移动的方向,任何两个连续的方向都不相同。
输出格式
用 R 行表示的小镇的地图(像输入文件中一样),字符 * 应该仅用来表示汽车最终可能出现的位置。
输入输出样例
输入 #1复制
4 5 ..... .X... ...*X X.X.. 3 NORTH WEST SOUTH
输出 #1复制
..... *X*.. *.*.X X.X..
#include<cstdio>
using namespace std;
const int MAXN=1010;
bool _map[55][55],vis[MAXN][55][55];//是否能走,有没有到过
int to[MAXN],pos[4][2]={1,0,0,1,-1,0,0,-1};//方向数组,操作数组
int read(){//快读
int x=0,f=1;
char c=getchar();
while(c<'0'||c>'9'){
if(c=='-') f=-1;
c=getchar();
}
while(c>='0'&&c<='9'){
x=x*10+c-'0';
c=getchar();
}
return x*f;
}
void dfs(int dep,int x,int y){//深搜,dep是深度
if(vis[dep][x][y]) return;//来过就返回
vis[dep][x][y]=1;//记录
if(dep==0) return;//这里可以直接返回,因为上一行已经记录了
while(1){
x+=pos[to[dep]][0],y+=pos[to[dep]][1];//改变位置
if(!_map[x][y]) break;//判断退出
dfs(dep-1,x,y);//往下遍历
}
}
int main(){//主函数
int n=read(),m=read(),sx,sy;//sx和sy是初始位置
char c,s[10];
for(int i=1;i<=n;i++){//读入图
scanf("\n");//细节1
for(int j=1;j<=m;j++){
c=getchar();
if(c=='.') _map[i][j]=1;//记录
if(c=='*') _map[i][j]=1,sx=i,sy=j;//记录,细节2
}
}
int k=read();
for(int i=k;i>0;i--){//dep是反的,这里也要反
scanf("\n%s",s);//细节1
if(s[0]=='S') to[i]=0;//细节3,想清楚哪边是加哪边是减
if(s[0]=='E') to[i]=1;
if(s[0]=='N') to[i]=2;
if(s[0]=='W') to[i]=3;
}
dfs(k,sx,sy);//开始深搜
for(int i=1;i<=n;i++){//输出
for(int j=1;j<=m;j++) printf("%c",vis[0][i][j]?'*':(_map[i][j]?'.':'X'));//这里压行也有点狠
printf("\n");
}
return 0;//华丽结束
}
//自己写的时候感觉好恶心啊这题,好好看好好学,开三维标记数组是没想到的,还有讲那些方向字符串的映射,他这数组开的都很好,自己基础还是不太稳,得多练,不能觉得掌握了一个算法的核心思想写同类算法题就无敌了
相关文章:
写起来比较复杂的深搜题目
年轻的拉尔夫开玩笑地从一个小镇上偷走了一辆车,但他没想到的是那辆车属于警察局,并且车上装有用于发射车子移动路线的装置。 那个装置太旧了,以至于只能发射关于那辆车的移动路线的方向信息。 编写程序,通过使用一张小镇的地图…...
MySQL强化关键_016_存储引擎
目 录 一、概述 二、MySQL 支持的存储引擎 三、指定存储引擎 四、修改存储引擎 五、常用存储引擎及适用场景 一、概述 MySQL 存储引擎决定了数据在磁盘上的存储方式和访问方式;不同的存储引擎实现了不同的存储和检索算法;MySQL 常见的存储引擎&…...

CSS:margin的塌陷与合并问题
文章目录 一、margin塌陷问题二、margin合并问题 一、margin塌陷问题 二、margin合并问题...
防护等级IPxx含义 -雨天充电需要防护盖吗
指标快要到期,新买的电车,第一次碰到雨天充电的问题,有点担心漏电。然后电商平台上一查,果然有卖防护罩的,但是真的需要吗? 下面从充电口防护等级,国标要求、注意事项等几个方面分析。 一、防护…...
【设计模式】责任链+模板+工程模式使用模板
前言 方便写出优雅,解耦,高内聚,高复用的代码。 Demo // 1. 定义验证器接口(责任链模式) public interface Validator {Validator setNext(Validator next);boolean validate(Data data); }// 2. 创建抽象验证器&am…...

探索服务网格(Service Mesh):云原生时代的网络新范式
文章目录 一、引言二、什么是服务网格基本定义形象比喻 三、服务网格解决了哪些问题微服务通信复杂性可观察性安全性 四、常见的服务网格实现IstioLinkerdConsul Connect 五、服务网格的应用场景大型微服务架构混合云环境 六、服务网格的未来发展与其他技术的融合标准化和行业规…...

SQL SERVER中实现类似LEAST函数的功能,返回多列数据中的最小值
使用 LEAST()函数可以简洁地在一行SQL语句中找出多个值中的最小值,但在SQLServer数据库中,没有内置的LEAST函数。 我们可以使用values子句创建临时的数据集的办法,返回多列数据中的最小值。 创建表 CREATE TABLE stu…...

SymPy | 获取表达式自由变量方法与因式分解
SymPy 是 Python 中强大的符号计算库,广泛应用于数学建模、公式推导和科学计算。本文将从两个核心功能展开:表达式中自由变量的获取与因式分解的实现,通过完整代码示例和深入分析,帮助读者掌握其使用方法。 第一部分:获…...

深度剖析并发I/O模型select、poll、epoll与IOCP核心机制
核心概要:select、poll、epoll 和 IOCP 是四种用于提升服务器并发处理能力的I/O模型或机制。前三者主要属于I/O多路复用范畴,允许单个进程或线程监视多个I/O流的状态;而 IOCP 则是一种更为彻底的异步I/O模型。 一、引言:为何需要这…...
单片机——实现交通信号灯管理
随便写写,汇总一下,就一个单片机,没有模拟软件,什么都没有~ 点阵、数码管、led同时点亮 #include <reg52.h>sbit ADDR0 P1^0; sbit ADDR1 P1^1; sbit ADDR2 P1^2; sbit ADDR3 P1^3; sbit ENLED P1^4;// 交通灯控制引…...

数据结构 -- 交换排序(冒泡排序和快速排序)
冒泡排序 基于“交换”的排序:根据序列中两个元素关键字的比较结果来对换这两个记录在序列中的位置 //交换 void swap(int &a,int &b){int temp a;a b;b temp; }//冒泡排序 void BubbleSort(int A[],int n){for(int i0;i<n-1;i){bool flag false; …...

【算法】: 前缀和算法(利用o(1)的时间复杂度快速求区间和)
前缀和算法:高效处理区间求和的利器 目录 引言什么是前缀和前缀和的基本实现前缀和的作用前缀和的典型应用场景前缀和的优缺点分析实战例题解析 引言 区间求和问题的普遍性暴力解法的时间复杂度问题前缀和算法的核心思想 什么是前缀和 前缀和的数学定义 通俗来…...

macOS 安装 PostgreSQL
文章目录 安装安装信息 验证GUI 工具下载 安装 最简单的方式是通过 brew 安装 brew install postgresql17该版本在 brew 上的详情页:https://formulae.brew.sh/formula/postgresql17 你也可以根据需要,搜索 安装更新版本 如果你没有安装 brew…...
打破传统范式,线上 3D 画展彰显多元亮点
(一)沉浸式体验,身临其境赏画 线上 3D 画展运用先进的 3D 建模和虚拟现实(VR)技术,高度还原了真实的展厅环境 。展厅内的布局、灯光,甚至墙壁的质感都被完美复刻,让观众仿佛置身于…...

Linux系统:基础命令之 ls~pwd~cd
文章目录 前言一、ls命令📘 命令简介:🧠 基本语法:演示ls🔧 常用选项:-l选项-a选项-h选项 小结 ls 二、pwd命令📘 命令简介:何为绝对路径!何为相对路径!&…...
MuJoCo安装记录
一、Anaconda安装 1. 下载安装包:https://repo.anaconda.com/archive/Anaconda3-2021.11-Linux-x86_64.sh 2. 进入下载界面执行以下命令安装 sudo chmod x Anaconda3-2021.11-Linux-x86_64.sh ./Anaconda3-2021.11-Linux-x86_64.sh 3. 如果安装anaconda之后打开…...
软件工程(八):UML类图的几种关系
依赖(Dependency) 定义:一个类使用到了另一个类(例如作为参数、局部变量等)。表示:虚线箭头,箭头指向被依赖的类。关键词:uses、depends on。示例:类 A 的某个方法使用类…...
python定时删除指定索引
脚本 import logging from datetime import datetime, timedelta from elasticsearch import Elasticsearch# 配置日志记录 logging.basicConfig(filenamedelete_uat_indices.log,levellogging.INFO,format%(asctime)s - %(levelname)s - %(message)s )# Elasticsearch 集群的…...

基于OAuth2-proxy和Keycloak为comfyui实现SSO
背景 comfyui无认证被漏扫后易被rce挖矿 攻击过程 https://www.oschina.net/news/340226 https://github.com/comfyanonymous/ComfyUI/discussions/5165 阿里云漏洞库关于comfyui的漏洞 https://avd.aliyun.com/search?qcomfyui×tamp__1384n4%2BxBD0GitGQ0QD8ID%2F…...

SmartSoftHelp 之 SQL Server 数据库安全备份与安全还原详解---深度优化版:SmartSoftHelp DeepCore XSuite
SmartSoftHelp 菜单之 DBMS 数据库备份与还原 (DBBackRest) 使用实例 SQL Server 数据库备份与还原详解 SQL Server 数据库的备份与还原是管理数据库的核心任务之一,涉及本地与远程操作、大小监控及目录管理等多个方面。以下是详细说明: 一、数据库…...

Spring 代理与 Redis 分布式锁冲突:一次锁释放异常的分析与解决
Spring 代理与 Redis 分布式锁冲突:一次锁释放异常的分析与解决 Spring 代理与 Redis 分布式锁冲突:一次锁释放异常的分析与解决1. 问题现象与初步分析2 . 原因探究:代理机制对分布式锁生命周期的干扰3. 问题复现伪代码4. 解决方案࿱…...

【数据结构】队列的完整实现
队列的完整实现 队列的完整实现github地址前言1. 队列的概念及其结构1.1 概念1.2 组织结构 2. 队列的实现接口一览结构定义与架构初始化和销毁入队和出队取队头队尾数据获取size和判空 完整代码与功能测试结语 队列的完整实现 github地址 有梦想的电信狗 前言 队列&…...
2025 全球优质 AI 产品深度测评:从通用工具到垂直领域的技术突围 —— 轻量聚合工具篇
在 AI 技术爆发式增长的 2025 年,全球范围内涌现出大量兼具技术创新与场景价值的优质产品。本文从通用对话、多模态生成、开发者工具、企业级方案及垂直领域深耕五个维度,深度解析 18 款国内外标杆产品,附独家对比数据与选型策略,…...
Python爬虫实战:获取天气网最近一周北京的天气数据,为日常出行做参考
1. 引言 随着互联网技术的发展,气象数据的获取与分析已成为智慧城市建设的重要组成部分。天气网作为权威的气象信息发布平台,其数据具有较高的准确性和实时性。然而,人工获取和分析天气数据效率低下,无法满足用户对精细化、个性化气象服务的需求。本文设计并实现了一套完整…...

根据YOLO数据集标签计算检测框内目标面积占比(YOLO7-10都适用)
程序: 路径改成自己的,阈值可以修改也可以默认 #zhouzhichao #25年5月17日 #计算时频图中信号面积占检测框面积的比值import os import numpy as np import pandas as pd from PIL import Image# Define the path to the directory containing the lab…...
Helm简介、安装、配置、使用!
一、简介 Helm 是 Kubernetes 的包管理器。包管理器类似于我们在 Ubuntu 中使用的apt、Centos中使用的yum 或者Python中的 pip 一样,能快速查找、下载和安装软件包。Helm 由客户端组件 helm 和服务端组件 Tiller 组成, 能够将一组K8S资源打包统一管理, 是查找、共享…...

LLM笔记(九)KV缓存(2)
文章目录 1. 背景与动机2. 不使用 KV Cache 的情形2.1 矩阵形式展开2.2 计算复杂度 3. 使用 KV Cache 的优化3.1 核心思想3.2 矩阵形式展开3.3 计算复杂度对比 4. 总结5. GPT-2 中 KV 缓存的实现分析5.1 缓存的数据结构与类型5.2 在注意力机制 (GPT2Attention) 中使用缓存5.3 缓…...
开发 前端搭建npm v11.4.0 is known not to run on Node.js v14.18.1.
错误nodejs 和npm 版本不一致 ERROR: npm v11.4.0 is known not to run on Node.js v14.18.1. This version of npm supports the following node versions: ^20.17.0 || >22.9.0. You can find the latest version at https://nodejs.org/. ERROR: D:\softTool\node-v14…...

LVS 负载均衡集群应用实战
前提:三台虚拟机,有nginx,要做负载 1. LVS-server 安装lvs管理软件 [root@lvs-server ~]# yum -y install ipvsadm 程序包:ipvsadm(LVS管理工具) 主程序:/usr/sbin/ipvsadm 规则保存工具:/usr/sbin/ipvsadm-save > /path/to/file 配置文件:/etc/sysconfig/ipvsad…...

MySQL——基本查询内置函数
目录 CRUD Create Retrieve where order by limit Update Delete 去重操作 聚合函数 聚合统计 内置函数 日期函数 字符函数 数学函数 其它函数 实战OJ 批量插入数据 找出所有员工当前薪水salary情况 查找最晚入职员工的所有信息 查找入职员工时间升序排…...