老鼠走迷宫算法:
老鼠组迷宫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 » 老鼠走迷宫算法