老鼠走迷宫(c/python)
来源:互联网 发布:视功能优化训练仪 编辑:程序博客网 时间:2024/05/16 01:44
描述:迷宫设计用2代表墙壁,1代表走过的路径(老鼠的走法用上下左右四个方向)
用C代码打印出一条路线,用python实现打印多条路径
C代码
#include<stdio.h>#include<stdlib.h>int reach(int i, int j);int maze[7][7] = { { 2,2,2,2,2,2,2 },{ 2,0,0,0,0,0,2 },{ 2,0,2,0,2,0,2 },{ 2,0,0,2,0,2,2 },{ 2,2,0,2,0,2,2 },{ 2,0,0,0,0,0,2 },{ 2,2,2,2,2,2,2 } };int start_i = 1;//入口位置int start_j = 1;int end_i = 5;//出口位置int end_j = 5;bool find_out = 0;//是否找到出口int main(){ int i, j; printf("print maze\n"); for (i = 0; i < 7; i++) { for (j = 0; j < 7; j++) { if (maze[i][j] == 2) { printf("█"); } else printf(" "); } printf("\n"); } if (reach(start_i, start_j) == 0) { printf("not find"); } else { printf("print road\n"); for (int i = 0; i < 7; i++) { for (int j = 0; j < 7; j++) { if (maze[i][j] == 2) printf("█"); else if (maze[i][j] == 1) printf("◇"); else printf(" "); } printf("\n"); } } system("pause");}int reach(int i, int j){ maze[i][j] = 1; //将当前到达位置置为1(防止其返回) if (i == end_i && j == end_j) find_out = 1; if (find_out != 1 && maze[i][j + 1] == 0)//向上查找... reach(i, j + 1); if (find_out != 1 && maze[i + 1][j] == 0) reach(i + 1, j); if (find_out != 1 && maze[i][j - 1] == 0) reach(i, j - 1); if (find_out != 1 && maze[i - 1][j] == 0) reach(i - 1, j); //如果当前路径不能找到出口,则把当前位置置0,老鼠重回当前位置换方向查找 if (find_out != 1) { maze[i][j] = 0; } return find_out;}
python代码
# -*- coding: utf-8 -*-"""Created on Sat Nov 4 20:22:59 2017@author: yangwenbin"""import numpy as npi_start,j_start=1,1i_end,j_end=5,5flag=0maze=[[2,2,2,2,2,2,2], [2,0,0,0,0,0,2], [2,0,0,0,2,0,2], [2,0,0,2,0,2,2], [2,2,0,2,0,2,2], [2,0,0,0,0,0,2], [2,2,2,2,2,2,2]]my_maze=np.array(maze)def Print_maze(): for i in range(my_maze.shape[0]): for j in range(my_maze.shape[1]): if my_maze[i][j]==2: print('█',end='') pass else: print(' ',end='') pass pass print() pass reach(i_start,j_start)def reach(i,j): my_maze[i][j]=1 if i==i_end and j==j_end: print("\nprint road\n") for m in range(my_maze.shape[0]): for n in range(my_maze.shape[1]): if my_maze[m][n]==2: print('█',end='') pass elif my_maze[m][n]==1: print("◇",end='') pass else: print(' ',end='') pass pass print() pass pass if my_maze[i][j+1]==0: reach(i,j+1) pass if my_maze[i+1][j]==0: reach(i+1,j) pass if my_maze[i][j-1]==0: reach(i,j-1) pass if my_maze[i-1][j]==0: reach(i-1,j) pass my_maze[i][j]=0Print_maze()
阅读全文
0 0
- 老鼠走迷宫(c/python)
- C语言算法之老鼠走迷宫
- [C++] 老鼠走迷宫(使用递回)
- 老鼠走迷宫
- 老鼠走迷宫
- 老鼠走迷宫
- 老鼠走迷宫【2】
- 老鼠走迷宫【1】
- 老鼠走迷宫问题
- 老鼠走迷宫算法
- 老鼠走迷宫I
- 老鼠走迷宫II
- 老鼠走迷宫
- 老鼠走迷宫二
- 老鼠走迷宫
- 老鼠走迷宫解析
- 老鼠走迷宫问题
- 老鼠走迷宫
- CMake安装教程
- 正则表达式re模块
- 关于“危险的”表达
- centos 7部署pptp vpn客户端
- switch case语句踩坑
- 老鼠走迷宫(c/python)
- forin遍历数组并增删其元素导致崩溃
- linux下使用 du查看某个文件或目录占用磁盘空间的大小
- 获取不同transName下面的transResTimeNum的集合
- Java
- 零基础学图形学(7) 几何知识——矩阵是如何工作的:第二部分
- KNN算法理解
- 编译OpenCV+contribute模块
- MFC函数之BitBlt