华为OJ机试-迷宫问题

机试链接
https://www.nowcoder.com/practice/cf24906056f4488c9ddb132…anking&tab=answerKey
之前学习过python,时间有点久了,平时工作也没怎么接触代码,想把一块重新捡起来,就找题目做做,发现真的很多都不会,于是找了很多解法方案,但是python的解法还是这个老哥的nice:
附上原先的:
本文链接:https://blog.csdn.net/weixin_26850469/article/details/112446815
连接 链接: link.
下面展示代码。简单明了!

# 利用动态规划和递归解
def jud(x, y, l, ll, lll):  # 求x,y点坐标在迷宫里的可能走法,即向上,向下,向左,向右n, m = len(l) - 1, len(l[0]) - 1  # l为迷宫位置二维图,ll为迷宫的每点从起点到该点k = []  # 的最短路径,lll为记录正在探索的从起点到该点的路线用以避免走重复if x + 1 <= n and (x + 1,y) not in lll and l[x + 1][y] != 1:#向右边走,不会超过边界,且不再已经走过的路线中,且不是墙体k += [(x + 1,y)]#将这个点位,记录到路径里面if x - 1 >= 0 and (x - 1,y) not in lll and l[x - 1][y] != 1:#向左走,不会超过边界,且不再已经走过的路线中,且不是墙体k += [(x - 1,y)]if y + 1 <= m and (x,y + 1) not in lll and l[x][y + 1] != 1:#向下走,不会超过边界,且不再已经走过的路线中,且不是墙体k += [(x,y + 1)]if y - 1 >= 0 and (x,y - 1) not in lll and l[x][y - 1] != 1:#向上走,不会超过边界,且不再已经走过的路线中,且不是墙体k += [(x,y - 1)]return kdef mg(x, y, l, ll, lll):  # x,y为该点坐标,其余同上,探索x,y的走法k = jud(x, y, l, ll, lll)  # k为可能的走法lll += [(x,y)]  # lll位置储存if len(k) > 0:  # 是否为可走for v in k:x1,y1 = vif not ll[x1][y1]:  # 如果x1,y1位置 还没有路径信息,用x,y位置进ll[x1][y1] = ll[x][y] + [(x1,y1)]  # 行更新if len(ll[x1][y1]) >= len(ll[x][y]) + 1:  # 如果x1,y1之前储存的路径#要长于从x,y的路径到x1,y1的,则更新x1,y1路径信息ll[x1][y1] = ll[x][y] + [(x1,y1)]mg(x1, y1, l, ll, lll)  # 再对x1,y1 这点进行探索return False
while True:try:lists = input('')#获取输入的行数与列数n = int(lists.split(" ")[0])m = int(lists.split(" ")[1])l, ll, lll = [], [], []for i in range(n):l += [list(map(int, input().split()))]for i in range(n):ll.append([])for j in range(m):ll[i].append([])ll[0][0] = [(0,0)]mg(0, 0, l, ll, lll)  # 设置起始点为(0,0),你也可以设为其他点为起始,for v in ll[-1][-1]:  # 来探索其他点到任意一点的最短位置print("(%d,%d)" % (v[0], v[1]))  # ll[-1][-1], 指的是将右下角一点设,元组输出前面有空格,需要将格式转换为题目要求的格式except:break

Python解法华为OJ机试-迷宫问题相关推荐

  1. 循环相乘取整法C语言,华为OJ机试题目:两个大整数相乘(纯C语言实现两个大整数相乘,两种方法实现大数相乘)...

    题目描述: 输出两个不超过100位的大整数的乘积. 输入: 输入两个大整数,如1234567 123 输出: 输出乘积,如:151851741 样例输入: 1234567 123 样例输出: 1518 ...

  2. C语言无符号双字节乘法,华为OJ机试标题:两个大整数相乘(纯C语言实现两个大整数相乘,两种方法实现大数相乘)...

    华为OJ机试题目:两个大整数相乘(纯C语言实现两个大整数相乘,两种方法实现大数相乘) 题目描述: 输出两个不超过100位的大整数的乘积. 输入: 输入两个大整数,如1234567 123 输出: 输出 ...

  3. 【OD统一考试(B卷)】火星改造、宜居星球改造计划,Python 解答 | 华为OD机试考生新抽中题

    最近更新的博客 华为 od 2023 | 什么是华为 od,od 薪资待遇,od 机试题清单 华为 OD 机试真题大全,用 Python 解华为机试题 | 机试宝典 [华为 OD 机试]全流程解析+经 ...

  4. 华为oj题目c语言,华为OJ机试题目——24点游戏算法

    对于这种题用程序实现只能是穷举的思想,而做法各异,如下代码是利用符号的不断变化,利用4个数计算值,默认是4个数字a,b,c,d是按顺序计算的,即默认是加了括号的,即(((a op1 b)op2 c)o ...

  5. 2023华为OD机试备考攻略 以及题库目录分值说明 考点说明

    刷题库,刷题库 刷题库.重要的事情说三遍!!!!!!!!!!!!!!!!!!!!!! 要刷有多种语言的实现的题库,一种语言看不懂可以换另一种语言,而且可以结合起来去重!!! 类似下面这种的题库: 华为 ...

  6. 【华为OD机试真题 python】机器人走迷宫 【2022 Q4 | 200分】

    前言 <华为OD笔试真题 python> 专栏含华为OD机试真题.华为面试题.牛客网华为专栏真题. 如果您正在准备华为的面试,或者华为od的机会,有任何想了解的可以私信我进行交流.我会尽可 ...

  7. 华为OD机试 - 九宫格按键输入(Python) | 机试算法备考思路

    最近更新的博客 华为OD机试 - 招聘(Python) | 备考思路,刷题要点,答疑 [新解法] 华为OD机试 - 五键键盘 | 备考思路,刷题要点,答疑 [新解法] 华为OD机试 - 热点网络统计 ...

  8. 华为OD机试2023年最新题库(JAVA、Python、C++)

    我是一名软件开发培训机构老师,我的学生已经有上百人通过了华为OD机试,学生们每次考完试,会把题目拿出来一起交流分享. 2023年5月份题库已经更新为OD统一考试(B卷),题库由三部分组成: 1.202 ...

  9. 华为OD机试 - 卡片组成的最大数字(Python) | 机试题算法思路

    最近更新的博客 华为OD机试 - 招聘(Python) | 备考思路,刷题要点,答疑 [新解法] 华为OD机试 - 五键键盘 | 备考思路,刷题要点,答疑 [新解法] 华为OD机试 - 热点网络统计 ...

  10. 华为OD机试Golang解题 - 机器人走迷宫

    华为Od必看系列 华为OD机试 全流程解析+经验分享,题型分享,防作弊指南) 华为od机试,独家整理 已参加机试人员的实战技巧 华为od 2023 | 什么是华为od,od 薪资待遇,od机试题清单 ...

最新文章

  1. PyTorch入门学习(二):Autogard之自动求梯度
  2. mysql字符串函数混合使用_MySql字符串函数使用技巧
  3. 【NLP】用BERT进行机器阅读理解
  4. HDU 1018.Big Number-Stirling(斯特林)公式 取N阶乘近似值
  5. 一段Big5繁体转换简体GB2312的程序
  6. 【渝粤题库】陕西师范大学152206领导科学 作业(高起专、专升本)
  7. 图像匹配,基于深度学习DenseNet实现以图搜图功能
  8. 打开英伟达控制面板超时打不开解决办法
  9. SEM和SEO的区别
  10. “区块链+”教育的发展现状及其应用价值研究
  11. 新版Edge浏览器如何设置崩溃自动恢复网页
  12. centos 文件分割
  13. redis从db0迁移数据至db1
  14. metasploit基础命令介绍
  15. Scrapy爬虫框架的第一个实例(完整详细!)
  16. STM32F407ZGT6的串口通信
  17. linux里gdb配置插件peda, gef, gdbinit
  18. 三级菜单-输出各省各市各县各镇
  19. vxworks 与 vm虚拟机 安装 参考链接
  20. Django3(一)

热门文章

  1. C# 将excel文件导入到SqlServer数据库
  2. android RN开发环境搭建
  3. idea在mac版怎么配置svn_Mac安装svn客户端
  4. linux 小巧的浏览器,崇尚简约 六款小体积浏览器推荐
  5. EtherCAT基于SOEM建立主站程序
  6. aqua data studio 连接db2
  7. 在32位Windows系统下安装Java
  8. 商务办公软件应用与实践【4】
  9. <<游戏设计艺术>>笔记
  10. Javascript多叉树的递归遍历和非递归遍历