1194: 7208 遍历迷宫

news/2024/12/22 18:42:37/

题目描述

迷宫导航是人工智能领域一个常见的问题,迷宫中有走廊和墙壁,机器人可以通过走廊,但不能穿过墙壁。

输入

输入数据文件包含多个测试数据。
每个测试数据的第一行是两个整数:M和N,表示迷宫的大小,其中M表示迷宫的行数,N表示迷宫的列数,这两个整数的大小都不超过60。
接下来有M行,每行有N个字符,描绘了这个迷宫。其中空格字符表示走廊,星号字符表示墙壁。迷宫没有出口。
接下来一行是两个整数,表示机器人的初始位置。初始时,机器人是朝北的。
测试数据中剩余的数据表示机器人接收到的命令,用字符表示,其中可能包含空格。有效的命令字符及其代表的含义为:
R:顺时针旋转90度。
L:逆时针旋转90度。
F:往前移动一步,如果前方位置为墙壁,则不移动。
Q:退出程序。每个测试数据中指令序列的最后一个字符为Q,此时应输出机器人当前位置和朝向。
输入数据文件中的测试数据一直到文件尾。

输出

对每个测试数据,输出机器人最终的位置和朝向(N,W,S或E),表示位置的行和列的整数及表示朝向的字符用空格隔开。

样例输入 复制

7 8
********
* * * **
* *    *
* * ** *
* * *  *
*   * **
********
2 4
RRFLFF FFR
FF
RFFQ

样例输出 复制

5 6 W
#include<iostream>
using namespace std;
int main()
{int m;int n;while(scanf("%d%d",&m,&n)!=EOF){char d[4] = {'N','W','S','E'};//北 西 南 东 上北下南左西右东//n0 w1 s2 e3char a[65][65];getchar();for(int i=1;i<=m;i++) {for(int j=1;j<=n;j++) {scanf("%c",&a[i][j]);}getchar();}int x = 0;int y = 0;cin>>x>>y;int index = 0;char op;while(scanf("%c",&op)!=EOF){if(op=='Q'){cout<<x<<' '<<y<<' '<<d[index];break;}if(op=='R'){if(index == 0)index = 3;else if(index == 1)index = 0;else if(index == 2)index = 1;else if(index == 3)index = 2;}if(op=='L'){if(index == 0)index = 1;else if(index == 1)index = 2;else if(index == 2)index = 3;else if(index == 3)index = 0;}if(op=='F'){if(index == 0){if(a[x-1][y]==' ')x--;elsecontinue;}else if(index == 1){if(a[x][y-1]==' ')y--;elsecontinue;}else if(index == 2){if(a[x+1][y]==' ')x++;elsecontinue;}else if(index == 3){if(a[x][y+1]==' ')y++;elsecontinue;}}}}return 0;
}

 


http://www.ppmy.cn/news/75289.html

相关文章

回归分析-简单线性回归推导

回归分析-简单线性回归模型 在大数据分析中&#xff0c;回归分析是一种预测性的建模技术&#xff0c;它研究的是因变量&#xff08;目标&#xff09;和自变量&#xff08;预测器&#xff09;之间的关系。这种技术通常用于预测分析&#xff0c;时间序列模型以及发现变量之间的因…

什么是Java中的Lambda表达式?

在Java 8中引入了Lambda表达式&#xff0c;它是一种匿名函数&#xff0c;可以作为参数传递给方法或存储在变量中。Lambda表达式使得编写简洁、灵活的代码成为可能&#xff0c;并促进了函数式编程在Java中的使用。 Lambda表达式的基本语法如下&#xff1a; javaCopy code (par…

MySQL保证主备一致,如何解决循环复制?

备库只读&#xff0c;是如何和主库同步数据的&#xff1f; 你可能会问&#xff0c;我把备库设置成只读了&#xff0c;还怎么跟主库保持同步更新呢&#xff1f; 这个问题&#xff0c;你不用担心。因为 readonly 设置对超级 (super) 权限用户是无效的&#xff0c;而用于同步更新…

如何以零停机时间或最少停机时间更新 Docker 容器,来确保应用程序持续可用

在现代应用程序开发和部署中&#xff0c;容器化技术已经成为一种常见的选择。Docker 容器的优势在于其轻量级、可移植性和可扩展性&#xff0c;但在更新容器时可能会面临停机时间的问题。本文将详细介绍如何以零停机时间或最少停机时间更新 Docker 容器&#xff0c;以确保应用程…

一、数据字典介绍

文章目录 一、数据字典介绍1、页面效果2、表设计3、数据分析4、根据页面效果分析数据接口 一、数据字典介绍 何为数据字典&#xff1f;数据字典就是管理系统常用的分类数据或者一些固定数据&#xff0c;例如&#xff1a;省市区三级联动数据、民族数据、行业数据、学历数据等&a…

计算机体系结构存储系统

存储系统原理 两种典型的存储系统&#xff1a;Cache存储系统和虚拟存储系统。前者主要目的是提高存储器速度&#xff0c;后者有主存储器和硬盘构成&#xff0c;主要用于扩大存储器容量。 存储系统的访问效率 e T 1 T 1 H ( 1 − H ) T 2 T 1 f ( H , T 2 T 1 ) e\frac{…

Python爬虫为什么需要库

爬虫需要库是因为爬虫需要从网页中提取数据&#xff0c;并对数据进行处理和存储。库是一组已经封装好的工具&#xff0c;可以帮助爬虫快速地完成这些任务。这些库可以大大简化爬虫的开发过程&#xff0c;提高爬虫的效率和稳定性。 Python爬虫常用的库有很多&#xff0c;以下是…

PathWise开发(1) 将增加节点的功能移动到鼠标右键 d3.js/vue.js

PathWise(1) 从零开始搭建知识图谱/个性化学习路径/d3.js/vue.js 2023年5月20日&#xff1a;将增加节点的功能移动到鼠标右键 跑起来先 思路&#xff1a; 将我们之前的MyTableAddNode.vue&#xff0c;删除其中的内容只留下下面的表单<template><!-- <div class…