简单迷宫问题

举报
兔老大 发表于 2021/04/20 00:12:53 2021/04/20
【摘要】 迷宫实验是取自心理学的一个古典实验。在该实验中,把一只老鼠从一个无顶大盒子的门放入,在盒子中设置了许多墙,对行进方向形成了多处阻挡。盒子仅有一个出口,在出口处放置一块奶酪,吸引老鼠在迷宫中寻找道路以到达出口。对同一只老鼠重复进行上述实验,一直到老鼠从入口到出口,而不走错一步。老鼠经过多次试验终于得到它学习走通迷宫的路线。设计一个计算机程序对任意设定的迷宫,求出一条从入口到出口...

迷宫实验是取自心理学的一个古典实验。在该实验中,把一只老鼠从一个无顶大盒子的门放入,在盒子中设置了许多墙,对行进方向形成了多处阻挡。盒子仅有一个出口,在出口处放置一块奶酪,吸引老鼠在迷宫中寻找道路以到达出口。对同一只老鼠重复进行上述实验,一直到老鼠从入口到出口,而不走错一步。老鼠经过多次试验终于得到它学习走通迷宫的路线。设计一个计算机程序对任意设定的迷宫,求出一条从入口到出口的通路,或得出没有通路的结论。
数组元素值为1表示该位置是墙壁,不能通行;元素值为0表示该位置是通路。假定从mg[1][1]出发,出口位于mg[n][m]

用一种标志在二维数组中标出该条通路,并在屏幕上输出二维数组。


  
  1. m=[[1,1,1,0,1,1,1,1,1,1],
  2. [1,0,0,0,0,0,0,0,1,1],
  3. [1,0,1,1,1,1,1,0,0,1],
  4. [1,0,1,0,0,0,0,1,0,1],
  5. [1,0,1,0,1,1,0,0,0,1],
  6. [1,0,0,1,1,0,1,0,1,1],
  7. [1,1,1,1,0,0,0,0,1,1],
  8. [1,0,0,0,0,1,1,1,0,0],
  9. [1,0,1,1,0,0,0,0,0,1],
  10. [1,1,1,1,1,1,1,1,1,1]]
  11. sta1=0;sta2=3;fsh1=7;fsh2=9;success=0
  12. def LabyrinthRat():
  13. print('显示迷宫:')
  14. for i in range(len(m)):print(m[i])
  15. print('入口:m[%d][%d]:出口:m[%d][%d]'%(sta1,sta2,fsh1,fsh2))
  16. if (visit(sta1,sta2))==0: print('没有找到出口')
  17. else:
  18. print('显示路径:')
  19. for i in range(10):print(m[i])
  20. def visit(i,j):
  21. m[i][j]=2
  22. global success
  23. if(i==fsh1)and(j==fsh2): success=1
  24. if(success!=1)and(m[i-1][j]==0): visit(i-1,j)
  25. if(success!=1)and(m[i+1][j]==0): visit(i+1,j)
  26. if(success!=1)and(m[i][j-1]==0): visit(i,j-1)
  27. if(success!=1)and(m[i][j+1]==0): visit(i,j+1)
  28. if success!=1: m[i][j]=3
  29. return success
  30. LabyrinthRat()

 

文章来源: fantianzuo.blog.csdn.net,作者:兔老大RabbitMQ,版权归原作者所有,如需转载,请联系作者。

原文链接:fantianzuo.blog.csdn.net/article/details/83064066

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。