迷宫问题代码-创新互联

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))

}

遂宁ssl适用于网站、小程序/APP、API接口等需要进行数据传输应用场景,ssl证书未来市场广阔!成为创新互联建站的ssl证书销售渠道,可以享受市场价格4-6折优惠!如果有意向欢迎电话联系或者加微信:13518219792(备注:SSL证书合作)期待与您的合作!

另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


当前标题:迷宫问题代码-创新互联
标题路径:http://ybzwz.com/article/csodih.html