我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Python怎么使用广度优先搜索遍历混乱地铁

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Python怎么使用广度优先搜索遍历混乱地铁

这篇文章主要介绍“Python怎么使用广度优先搜索遍历混乱地铁”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Python怎么使用广度优先搜索遍历混乱地铁”文章能帮助大家解决问题。

    混乱地铁问题

    【问题描述】

    在某个城市中地铁网极度混乱。一条地铁线路上有n个地铁站,分别编号为1到n。地铁线路上的每一个站都会停靠地铁,每一个地铁站上都有一个数字m,代表从此站出发乘客必须乘坐的站数。每个地铁站都有通往两个方向的地铁。因此可以向编号大的方向前进m站,也可以向编号小的方向前进m站。但如果前进后超出了地铁站的范围,则该地铁不可被乘坐。例如编号为1的地铁上的数字为3,那么在该地铁站上车,可以向正方向坐到4号地铁站。但不能反方向坐车到-2号地铁站,因为-2号地铁站不存在。现在乘客从A号地铁站出发,想要到达B号地铁站,求他能否到达,最少要搭乘多少次地铁?

    【输入形式】

    • 第一行输入地铁站的个数

    • 第二行依次输入每个地铁站的数字,以空格隔开

    • 第三行输入地铁站A和B,以空格隔开

    【输出形式】

    地铁站A到B最少要搭乘地铁的次数

    【样例输入】

    5

    2 4 1 2 3

    1 2 

    【样例输出】

    2

    程序设计 

    n=int(input())lst1=[int(i) for i in range(n)]lst2=list(map(int,input().split()))start,end=map(int,input().split())def BFS(lst1,lst2,start,end):      #广度优先搜索遍历    count=0          #计算达到终点所需乘坐地铁的次数    visited=[0 for i in range(n)]    #设置标志列表    Queue=[]         #设置队列,用于广度优先搜索遍历    Queue.append(start-1)   #将起点放入队列    flag=1           #用于改变方向    while Queue:    #开始循环遍历        t=Queue.pop(0)   #出队        for i in range(2):    #分别向左右两个方向走            flag=-1*flag    #改变方向                   new=lst1[t]+flag*lst2[t]    #到达的新的地铁站的下标            if new<0 or new>=n:      #检查是否合法                continue             if new>=0 or new<n:                Queue.append(new)     #若合法,就放入队列中                visited[new]=1        #标记一下                count+=1              #乘坐的地铁次数                if visited[end-1]==1:   #如果终点被标记了,说明已经到终点了                    return count    return 0print(BFS(lst1,lst2,start,end))

    总结 

    广度优先搜索遍历主要通过一个队列来实现,具体的格式为:

    Queen.append()while Queen:    t=Queen.pop()     if ……        Queen.append()

    先将第一个元素放入队列中,然后将第一个元素取出,并找到合法的所有元素放入队列中,再挨个从队列中取出,直到队列为空,表示所有合法的元素都已经被遍历过了。

    关于“Python怎么使用广度优先搜索遍历混乱地铁”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注编程网行业资讯频道,小编每天都会为大家更新不同的知识点。

    免责声明:

    ① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

    ② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

    Python怎么使用广度优先搜索遍历混乱地铁

    下载Word文档到电脑,方便收藏和打印~

    下载Word文档

    猜你喜欢

    Python怎么使用广度优先搜索遍历混乱地铁

    这篇文章主要介绍“Python怎么使用广度优先搜索遍历混乱地铁”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Python怎么使用广度优先搜索遍历混乱地铁”文章能帮助大家解决问题。混乱地铁问题【问题描
    2023-07-05

    Python使用广度优先搜索遍历混乱地铁问题

    这篇文章主要介绍了Python使用广度优先搜索遍历混乱地铁问题,广度优先搜索算法(又称宽度优先搜索)是最简便的图的搜索算法之一,这一算法也是很多重要的图的算法的原型,需要的朋友可以参考下
    2023-05-14

    编程热搜

    • Python 学习之路 - Python
      一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
      Python 学习之路 - Python
    • chatgpt的中文全称是什么
      chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
      chatgpt的中文全称是什么
    • C/C++中extern函数使用详解
    • C/C++可变参数的使用
      可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
      C/C++可变参数的使用
    • css样式文件该放在哪里
    • php中数组下标必须是连续的吗
    • Python 3 教程
      Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
      Python 3 教程
    • Python pip包管理
      一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
      Python pip包管理
    • ubuntu如何重新编译内核
    • 改善Java代码之慎用java动态编译

    目录