迷宫问题代码
admin
2023-07-30 17:20:06
0
def valid(grid, x, y):
    if x >= 0 and x < len(grid) and y >= 0 and y < len(grid[0]) and grid[x][y] == 1:
        return True
    else:
        return False

def walk(grid, x, y):
    if x == len(grid)-1 and y == len(grid[0])-1:
        print'success'
        grid[x][y] = 2
        return True

    if valid(grid, x, y):
        grid[x][y] = 2
        if walk(grid, x, y+1) or walk(grid, x-1, y) or walk(grid, x, y-1) or walk(grid, x+1, y):
            return True
        else:
            grid[x][y] = 1
            return False
    else:
        return False


grid=[
[1, 1, 1, 0, 1, 1, 0, 0, 0, 1, 1, 1, 1],
[1, 0, 1, 1, 1, 0, 1, 1, 1, 1, 0, 0, 1],
[0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0],
[1, 1, 1, 0, 1, 1, 1, 0, 1, 0, 1, 1, 1],
[1, 0, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1],
[1, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1],
[1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
]

if __name__ == '__main__':
    walk(grid, 0, 0)
    for i in range(len(grid)):
     print(grid[i])
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# Created by xiaoqin00

#迷宫逃亡
result=''
def mazeValid(x,y,maze):
    if x>=0 and y>=0 and x
参考的golang代码
package main
import (
	"fmt"
)

func valid(grid [][]int, row int, column int) bool {
	// 验证可以不可以通行
	if row >= 0 && row < len(grid) && column >= 0 && column < len(grid[0]) && grid[row][column] == 1 {
		return true
	}
	return false
}

func walk(grid [][]int, x int, y int) bool {
	// 递归退出
	if x == len(grid)-1 && y == len(grid[0])-1 {
		fmt.Println(grid)
		return true
	}
	// 递归部分
	if valid(grid, x, y) {
		grid[x][y] = 2

		if !walk(grid, x, y+1) {
			// 回溯到原位置
			grid[x][y] = 1
		} else if !walk(grid, x-1, y) {
			// 回溯到原位置
			grid[x][y] = 1
		} else if !walk(grid, x, y-1) {
			// 回溯到原位置
			grid[x][y] = 1
		} else if !walk(grid, x+1, y) {
			// 回溯到原位置
			grid[x][y] = 1
		} else {
			return false
		}
	}
	return true
}

func main() {
	// 迷宫:1表示通路、0是墙
	grid := [][]int{
		{1, 1, 1, 0, 1, 1, 0, 0, 0, 1, 1, 1, 1},
		{1, 0, 1, 1, 1, 0, 1, 1, 1, 1, 0, 0, 1},
		{0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0},
		{1, 1, 1, 0, 1, 1, 1, 0, 1, 0, 1, 1, 1},
		{1, 0, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1},
		{1, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1},
		{1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
		{1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1},
	}
	fmt.Println(walk(grid, 0, 0))

}


相关内容

热门资讯

特朗普谈美国球员获“特赦”:是... 在特朗普干预后,国际足联放宽美国前锋巴洛贡的红牌处罚,引发全球舆论批评。福克斯新闻网7月6日报道,特...
不用自吹实力,看美军操作就知道... 有分析认为,解放军已建成覆盖第一、第二岛链的反介入/区域拒止作战圈,远洋作战能力也在快速发展。军事评...
豆包又一功能下线,“应用生成”... IT之家 7 月 6 日消息,据《读佳》今日消息,豆包在宣布全面下线“智能体”功能之前,其“应用生成...
腾讯正式发布混元Hy3 北京商报讯(记者 魏蔚)7月6日,腾讯混元Hy3 正式发布。相比preview版本,它展现出显著强于...
跳过麒麟9030 华为Mate... 7月6日消息,去年9月,华为发布了三折叠Mate XTs非凡大师。在这场发布会上,华为常务董事、终端...
宇树获批,人形机器人行情提速,... 近期,人形机器人产业迎来多重标志性催化:宇树科技获批文即将登陆资本市场,四足与人形机器人双线布局进入...
2026年游戏及多任务处理性能... 在2026年的今天,对于热爱手游、追求极致流畅体验,同时又需要具备强大后台多任务处理能力的用户来说,...
国内首套全国产化10千伏主动支... 记者获悉,7月4日,国内首套全国产化10千伏阻抗隔离型多工况主动支撑电源挂网试运行在中国船舶集团有限...
荣科全资子公司荣科易健康入选上... 来源:荣科科技官微 近日,经上海市数据局正式批准,荣科全资子公司上海荣科易健康科技有限公司(以下简...
扎根雄安:拼多多为“数字新城”... 6月30日,拼多多雄安公司的在岗员工规模正式突破600人,一跃成为雄安新区当前规模最大的互联网民营企...