Python
来源:互联网 发布:淘宝怎么抢购秒杀 编辑:程序博客网 时间:2024/06/03 18:19
算法描述:给定开始点坐标(x,y) 和终点坐标(p,q),在一个二维数组里面,其中1代表障碍物,0则没有。求开始到终点的最短距离。
代码如下:
MIN = 9999999a = [[0 for col in range(50)] for row in range(50)]#迷宫最大数组book = [[0 for col in range(50)] for row in range(50)]#标记数组def dfs(start_x,start_y,end_x,end_y,migong_array,step): ''' :param start_x: 起始横坐标 :param start_y: 起始纵坐标 :param end_x: 终点横坐标 :param end_y: 终点纵坐标 :param migong_array: 迷宫的数组 :return: ''' next_step = [[0,1], #向右走 [1,0], #向下走 [0,-1], #向左走 [-1,0] #向上走 ] if (start_x == end_x and start_y == end_y): global MIN if(step < MIN): MIN = step return for i in range(len(next_step)): next_x = start_x + next_step[i][0] next_y = start_y + next_step[i][1] if(next_x < 0 or next_y < 0 or next_x > len(migong_array) or next_y > len(migong_array[0])): continue if(a[next_x][next_y] == 0 and book[next_x][next_y] == 0): book[next_x][next_y] = 1 dfs(next_x,next_y,end_x,end_y,migong_array,step+1) book[next_x][next_y] = 0 returnif __name__ == '__main__': start_x = 0 start_y = 0 end_x = 3 end_y = 2 migong_array = [[0,0,1,0],[0,0,0,0],[0,0,1,0],[0,1,0,0],[0,0,0,1]] #初始化迷宫 for i in range(len(migong_array)): for j in range(len(migong_array[0])): a[i][j] = migong_array[i][j] #将迷宫数组写入a中 book[start_x][start_y] = 1 #将第一步标记为1,证明走过了。避免重复走 dfs(start_x,start_y,end_x,end_y,migong_array,0) print('The min length of path is : {}'.format(MIN)) #输出为7,即最短路径为 7
阅读全文
0 0
- Python
- Python
- Python
- python
- Python
- PYTHON
- Python
- Python
- Python
- Python
- Python
- Python
- Python
- Python
- Python
- Python
- python
- Python
- 删除空格
- 使用layui中的laypage遇到的各种问题总结
- Android开发之Handler消息机制
- AngularJS-layDate1.0.js 指令
- Android Studio获取开发版SHA1值和发布版SHA1值的史上最详细方法
- Python
- mfc中的.rc和.rc2出错fatal error RC1015: cannot open include file 'res\ModalD
- 关于SpringMVC配置文件中的<context:component-scan >
- 坑爹!男孩打赏女主播,不知充值是在花钱---众智云
- 三九、清除页面滚动条
- URL,HTTP,端口概念
- 服务器时间同步平台化
- 之字形打印树
- Activity生命周期 笔记