Python机器人走迷宫

360影视 欧美动漫 2025-03-14 10:58 3

摘要:def dfs(i, j, matrix, x, y):# 边界条件的判定if i >= x or j >= y: # 下一步越界return Falseif matrix[i][j] == 1: # 下一步为墙return Falseif matrix[i]

def dfs(i, j, matrix, x, y):# 边界条件的判定if i >= x or j >= y: # 下一步越界return Falseif matrix[i][j] == 1: # 下一步为墙return Falseif matrix[i][j] == -1: # 不可到达点return Falseif matrix[i][j] == 2: # 可到达点return Trueif matrix[i][j] == 0:# 向东走一步east = dfs(i + 1, j, matrix, x, y)# 向北走一步north = dfs(i, j + 1, matrix, x, y)if east or north:# 只要一个可以走matrix[i][j] = 2 # 当前点为可到达点else:matrix[i][j] = -1 # 当前点为不可到达点return matrix[i][j] == 2 # 返回当前点是否为可达点def result(x, y, poses):# 构造矩阵matrix = [[0] * y for _ in range(x)]for i, j in poses:# 把墙放到矩阵里matrix[i][j] = 1 # 墙标记为1matrix[x - 1][y - 1] = 2 # 出口标记为2(可到达点)# 从起点开始深搜dfs(0, 0, matrix, x, y)# 统计陷阱和不可达点的数量trap = 0 # 陷阱数量unreach = 0 # 不可达点的数量for i in range(x):for j in range(y):if matrix[i][j] == 0:unreach += 1elif matrix[i][j] == -1:trap += 1return f"{trap} {unreach}"# 自定义输入x, y = map(int, input("请输入房间的行数和列数(用空格分隔): ").split) # x行,y列n = int(input("请输入墙壁的个数: "))poses = [list(map(int, input(f"请输入第 {i + 1} 个墙壁的坐标(用空格分隔): ").split)) for i in range(n)] # 墙的位置# 输出结果print(result(x, y, poses))

来源:佬是

相关推荐