迷宫-蓝桥云课,python实现

news2024/11/24 12:24:28

X 星球的一处迷宫游乐场建在某个小山坡上。它是由 10 \times 1010×10 相互连通的小房间组成的。

房间的地板上写着一个很大的字母。我们假设玩家是面朝上坡的方向站立,则:

  • LL 表示走到左边的房间,
  • RR 表示走到右边的房间,
  • UU 表示走到上坡方向的房间,
  • DD 表示走到下坡方向的房间。

X 星球的居民有点懒,不愿意费力思考。他们更喜欢玩运气类的游戏。这个游戏也是如此!

开始的时候,直升机把 100100 名玩家放入一个个小房间内。玩家一定要按照地上的字母移动。

迷宫地图如下:

UDDLUULRUL
UURLLLRRRU
RRUURLDLRD
RUDDDDUUUU
URUDLLRRUU
DURLRLDLRL
ULLURLLRDU
RDLULLRDDD
UUDDUDUDLL
ULRDLUURRR

请你计算一下,最后,有多少玩家会走出迷宫,而不是在里边兜圈子?

主要思路:

先用一个字符串str1保存,迷宫分布

1.先把边缘能走出迷宫的位置找出来,

        即上边缘向上走的位置

        即下边缘向下走的位置

        即左边缘向左走的位置

        即右边缘向右走的位置

这里是用flag列表统计,找到了下标为

flag = [0, 4, 5, 8, 93, 99]即为能走出的位置

2.再以此假定从0~100位置每个人开始走,

        当然如果某人起始下标和标记的flag列表中某下标一样,则可以走出去。

        当起始下标不一样,就开始行走,行走策略是(因为这里是字符串表示,且刚好100人对应100个位置(0~99下标)),故有以下规律:

        if str1[k] == 'U':
            k -= 10
        elif str1[k] == 'D':
            k += 10
        elif str1[k] == 'L':
            k -= 1
        else:#R
            k += 1

        行走后再判断一下,是否有人走过的位置与flag标志列表中的一致,有就直接算一位

        其中为了避免死循环,人一直走的情况,加一个cur列表,记录该人走过的位置下标,如果入列表路径中有与之前相重合的,则一定会死循环,这种情况说明不用找了。

str1 ="\
UDDLUULRUL\
UURLLLRRRU\
RRUURLDLRD\
RUDDDDUUUU\
URUDLLRRUU\
DURLRLDLRL\
ULLURLLRDU\
RDLULLRDDD\
UUDDUDUDLL\
ULRDLUURRR"
#标志能走出去的位置
flag = []
for i in range(10):#i表示行,第几行
    for j in range(10):#j表示列,第几列
        #处理边界上一定能走通的位置,标记一下,即只要有人走到了这个标记处就能出迷宫
        if i == 0 and str1[i*10+j] == 'U':
            flag.append(i*10+j)
        if i == 9 and str1[i*10+j] == 'D':
            flag.append(i*10+j)
            
        if j == 0 and str1[i*10+j] == 'L':
            flag.append(i*10+j)
        if j == 9 and str1[i*10+j] == 'R':
            flag.append(i*10+j)
# UDDLUULRUL\
# UURLLLRRRU\
# RRUURLDLRD\
# RUDDDDUUUU\
# URUDLLRRUU\
# DURLRLDLRL\
# ULLURLLRDU\
# RDLULLRDDD\
# UUDDUDUDLL\
# ULRDLUURRR"
#处理这100个人
count = 0#记录走出的人数
for i in range(0,100):
    
    k = i
    if k in flag:
        count += 1
        continue
    cur = []#记录这个人走的路径如第一个人下标为0直接上走,cur=[0],第8个人下标为7,先右走再上走,cur=[7,8]
    cur.append(k)#记录起始位置
    
    while True: #第一位是原k不用考虑
        if str1[k] == 'U':
            k -= 10
        elif str1[k] == 'D':
            k += 10
        elif str1[k] == 'L':
            k -= 1
        else:#R
            k += 1
        if k in flag:#找到了标志的正确位置,能出去
            count += 1
            break
        if k in cur:#说明有循环了,走不出去,不用走了
            break
        cur.append(k)
print(count)
        

蓝桥云课结果:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/45913.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

HTTPS —— HTTPS的加密方式

JavaEE传送门JavaEE HTTP —— HTTP 协议中的细节(超详细!!) HTTP —— HTTP 响应详解, 构造 HTTP 请求 目录HTTPS"加密"对称加密非对称加密证书总结HTTPS “加密” 明文: 要传递的原始信息 密文: 经过加密后的信息 密钥: 将明文加密的方法 (在加密和解密中起到…

京东APP技术解密:移动端秒级配置触达平台-Switchquery

原文已同步发表在京东零售技术公众号:mp.weixin.qq.com/s/hvsFwsQHT… 一 背景 随着移动互联网的快速发展,为满足各类用户及人群的体验需求,移动端的开发者们开发了丰富多彩的体验与功能。同时对于快速控制各类功能的切换、灰度,降级等能力…

纠正一下网上文章所说“利用RPC绕过CFG”的错误说法

纠正误区 网上说“利用RPC绕过CFG”的说法是不正确的,我先给出自己的观点,后面再说我的分析。网上有好几篇分析CVE-2021-26411的文章,对绕过CFG一律都说是利用RPC。其实在这个漏洞场景下,攻击者只不过是借助RPC获得执行任意系统函…

Nginx配置Https证书

大致的流程如下 1.申请Https证书,绑定域名信息; 如果您有自己的服务器或者购买云服务器,可在相关方平台申请SSL证书,申请后下载相关证书文件即可,如下图: 解压缩后发现可以得到如下文件: 由于我们要使用Nginx配置SSL…

美团面试应届生第二问:Volatile有什么作用?

文章目录volatile有什么作用?可见性证明指令重排证明不能保证原子性证明Volatile与Synchronized的区别volatile有什么作用? 保证线程的可见性禁止指令重排但是不能保证原子性 可见性证明 有如下静态成员变量num,初始值为0;有两…

Nginx的配置

1运行中的Nginx进程间的关系 1.在正式提供服务的产品环境下,部署Nginx时都是使用一个master进程来管理多个worker进程,一般情况下,worker进程的数量与服务器上的CPU核心数相等。每一个worker进程都是繁忙的,它们在真正地提供互联…

RabbitMQ 快速入门-消息的收发

RabbitMQ 快速入门-消息的收发准备工作一、Connection 方式1. 生产者测试类2. 消费者测试类注意二、RabbitTemplate 方式1. 生产者测试类2. 创建队列3. 消费者注意准备工作 推荐创建两个 SpringBoot 项目,一个作为生产者,另一个作为消费者 也可使用 Ma…

数据趣事:历史最高温的是新疆吐鲁番?重庆45℃高温仅排全国第二

全球最冷的地方在哪?最热的又在哪?中国最冷的城市不是哈尔滨而是意想不到的的乌鲁木齐,历史上最高温的省市不是重庆而是新疆吐鲁番......跟随天气最趣事儿大屏一起了解有趣的天气数据吧! 最高温的省市是新疆吐鲁番,曾…

设置线程分离的方法

线程分离的设置方法 1)在创建线程时,利用thread_create函数的参2设置线程分离; 2)创建完线程后,通过pthread_detach函数设置线程分离。 第一种方法效率最高的。 1、创建线程时,设置线程分离 (1)使用 pth…

基于RK3568开源鸿蒙的助农金融服务终端设计方案

背景 2022年中央一号文件《中共中央 国务院关于做好2022年全面推进乡村振兴重点工作的意见》提出,要强化乡村振兴金融服务;《“十四五”推进农业农村现代化规划》强调,健全农村金融服务体系,将“乡村振兴金融服务行动”列入新一轮…

基于杂草优化算法的线性规划问题求解matlab程序

基于杂草优化算法的线性规划问题求解matlab程序 1 杂草算法简介 1.1 IWO定义 IWO是2006年由A. R. Mehrabian等提出的一种从自然界杂草进化原理演化而来的随机搜索算法,模仿杂草入侵的种子空间扩散、生长、繁殖和竞争性消亡的基本过程,具有很强的鲁棒性和…

文本检测与识别技术的应用现状及产业案例

文本检测与识别技术的产业应用现状 文本是人类文明的视觉和物理载体,文本的检测和识别使视觉与对其内容的理解进一步联系起来。在这一部分中,我们列出并分析了对提高我们的生产力和生活质量产生或将产生重大影响的最杰出的项目。 自动数据录入&#xff…

创建Vue项目流程

第一步:创建项目。首先创建一个文件夹,然后找到要创建项目的文件夹 输入CMD 进入小黑窗 输入“vue create 项目名” 创建我们这个项目 第二步:进入版本选择 按上下键选 选择最后的自定义版本 按回车键 第三步: 按上下键进行切换 按…

ESP32基础应用之LVGL基础

文章目录1 实验目的1.1 参考文章2 实验工具3 准备工作3.1 搭建ESP32开发环境3.2 克隆lv_port_esp32工程4 配置lv_port_esp32工程5 实验验证6 使用过程遇到的问题6.1 触摸功能点击屏幕位置不对1 实验目的 本实验为使用ESP32实现LVGL(轻量级的嵌入式图形库&#xff0…

38、Java——汽车租赁系统(JDBC+MySQL+Apache DBUtils)

​ ✅作者简介:热爱国学的Java后端开发者,修心和技术同步精进。 🍎个人主页:乐趣国学的博客 🍊个人信条:不迁怒,不贰过。小知识,大智慧。 💞当前专栏:Java案例…

iptables简述

netfilter iptables的底层实现是netfilter。netfilter实在Linux内核2.4版引入的子系统,作为通用框架提供一套hook函数的管理机制,使得数据包过滤、地址转换、访问控制、连接跟踪等功能得以实现。netfilter的架构就是在整个网络流程中放置了一些钩子&…

[附源码]计算机毕业设计springboot海滨学院学生大创项目申报与审批系统

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

大中型园区网络拓扑架构

目录 园区出口区 数据中心区 网络管理区 DMZ区 核心层 汇聚层 终端层 接入层 大中型园区网络通常采用核心层为“根”的树形网络架构,拓扑稳定,易于扩展和维护。 园区网络可划分为多个层次:接入层、汇聚层、核心层, 以及多个分区&a…

iwebsec靶场 SQL注入漏洞通关笔记9- 双写关键字绕过

系列文章目录 iwebsec靶场 SQL注入漏洞通关笔记1- 数字型注入_mooyuan的博客-CSDN博客 iwebsec靶场 SQL注入漏洞通关笔记2- 字符型注入(宽字节注入)_mooyuan的博客-CSDN博客 iwebsec靶场 SQL注入漏洞通关笔记3- bool注入(布尔型盲注&#…

雨水情监测及视频监控解决方案 水库雨水情自动测报系统 介绍 功能 特点

平升电子水雨情自动监测系统/雨水情监测及视频监控解决方案/水库雨水情自动测报系统辅助水利管理部门实现水库雨水情信息“全要素、全量程、全覆盖”自动测报。系统具备水库水位、雨量、现场图像/视频等水文信息采集、传输、处理及预警广播等功能,有效提升了雨水情信…