最新消息:网站改版咯

老鼠走迷宫算法

C语言 Yovae 2397浏览

老鼠走迷宫算法:
老鼠组迷宫c语言源码

/*
 * 问题描述: 
 * 说明老鼠走迷宫是递回求解的基本题型,我们在二维阵列中使用2表示迷宫墙壁,使用1来表
 * 示老鼠的行走路径,试以程式求出由入口至出口的路径。
 * coding:Yovae 2011-5-8
 * website:www.yovae.com 
*/ 
#include <stdio.h>
#include <stdlib.h>

int start[2]={1,1},end[2]={3,4},finish=0;
int mg[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}
};

void display(int m[7][7],int w,int h)//显示迷宫 
{
     int i,j;
     for(i=0;i<h;i++)
     {
       for(j=0;j<w;j++)
       {
          if(m[i][j]==2)
          {
            printf("■");
          }
          else if(m[i][j]==1)
          {
            printf("△"); 
          }
          else
          {
            printf("□"); 
          }
       }
       printf("\n");
     }
     
}

int visit(int mg[7][7],int x,int y)
{
    mg[x][y]=1;
    
    if(x==end[0]&&y==end[1])
    {
       finish=1;
    }
    
    if(!finish&&mg[x][y+1]==0) visit(mg,x,y+1);
    if(!finish&&mg[x][y-1]==0) visit(mg,x,y-1);
    if(!finish&&mg[x+1][y]==0) visit(mg,x+1,y);
    if(!finish&&mg[x-1][y]==0) visit(mg,x-1,y);
    
    if(finish!=1)
    {
       mg[x][y]=0;
    }
    return finish;    
    
}
int main()
{
    
     display(mg,7,7);
     printf("\n");
     if(visit(mg,start[0],start[1])==0) 
     {
         printf("没通路!");
     }
     else
     {
     display(mg,7,7); 
     }
     system("pause");
     return 0;
}

老鼠走迷宫Java源码

/**
 * @author 叶有为   E-mail:yovae@qq.com
 * @version 创建时间:2011-5-19 下午12:32:46
 * @Website:www.yovae.com
 * 
 */

public class Pascal {
	public static void main(String args[])
	{
		int flag;
		Pos finish;
		int[][] mg= 
		{//初始化迷宫 
		{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}
		};
		Pos.display(mg, 7, 7);
		finish=new Pos(3,4);
		if(visit(mg,1,1)==0)
		{
			System.out.println("没有找到!");
		}
		else
		{
			System.out.println("找到结果:");
			Pos.display(mg, 7, 7);
		}
		
		
		
	}
	public static int visit(int mg[][],int x,int y)
	{
		mg[x][y]=1;
		if(x==Pos.x&&y==Pos.y)
		{
			Pos.flag=1;
		}
		if(Pos.flag!=1&&mg[x][y+1]==0) visit(mg,x,y+1);
		if(Pos.flag!=1&&mg[x][y-1]==0) visit(mg,x,y-1);
		if(Pos.flag!=1&&mg[x+1][y]==0) visit(mg,x+1,y);
		if(Pos.flag!=1&&mg[x-1][y]==0) visit(mg,x-1,y);
		
		if(Pos.flag!=1)
		{
			mg[x][y]=0;
		}
		return Pos.flag;
	    
	}

}

class Pos
{
	public static int x;
	public static int y;
	public static int flag;
	
	Pos(int x,int y)
	{
		this.x=x;
		this.y=y;
		this.flag=0;
	}
	
	public static void display(int mg[][],int w,int h)
	{
		int i,j;
		for(i=0;i<h;i++)
		{
			for(j=0;j<w;j++)
			{
				if(mg[i][j]==2)
				{
					System.out.print('■');
				}
				else if(mg[i][j]==1)
				{
					System.out.print('△');
				}
				else
				{
					System.out.print('□');
				}
				
			}
			System.out.print('\n');
		}
	}
}

转载请注明:Yovae Studio » 老鼠走迷宫算法