老鼠走迷宫(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()
原创粉丝点击