首页 > 代码库 > 老鼠走迷宫
老鼠走迷宫
1 /*说明:老鼠走迷宫是递回求解的基本题型,我们在二维阵列中使用 2 表示迷宫墙 2 壁,使用 1 来表示老鼠的行走路径,试以程式求出由入口至出口的路径。 3 解法:老鼠的走法有上、左、下、右四个方向,在每前进一格之后就选一个方向前进, 4 无法前进时退回选择下一个可前进方向,如此在阵列中依序测试四个方向,直到走到 5 出口为止,这是递回的基本题。 6 */ 7 //在数组的初始化中可以画你的地图 8 #include<stdio.h> 9 #include<stdlib.h> 10 int visit(int,int); 11 int maze[7][7]={{2,2,2,2,2,2,2}, 12 {2,0,0,0,0,0,2}, 13 {2,0,2,0,2,0,2}, 14 {2,0,0,2,0,2,2}, 15 {2,2,0,2,0,2,2}, 16 {2,0,0,0,0,0,2}, 17 {2,2,2,2,2,2,2}, 18 }; 19 int startI=1,startJ=1;//指定入口 20 int endI=5,endJ=5;//指定出口 21 int success=0; //用来标记visit函数的结果 22 int main(){ 23 int i,j; 24 printf("显示迷宫:\n"); 25 for(i=0;i<7;i++){ 26 for(j=0;j<7;j++) 27 if(maze[i][j]==2) 28 printf("#"); 29 else 30 printf(" "); 31 printf("\n"); 32 } 33 if(visit(startI,startJ)==0) 34 printf("\n没有找到出口!\n"); 35 else{ 36 printf("\n显示路径:\n"); 37 for(i=0;i<7;i++){ 38 for(j=0;j<7;j++){ 39 if(maze[i][j]==2) 40 printf("#"); 41 else if(maze[i][j]==1) 42 printf("&"); 43 else printf(" "); 44 } 45 printf("\n"); 46 } 47 } 48 return 0; 49 } 50 int visit(int i,int j){//递归算出老鼠该走的道路,上下方向判断 51 maze[i][j]=1; 52 if(i==endI&&j==endJ)//说明到达了指定的出发点 53 success=1; 54 if(success!=1&&maze[i][j+1]==0) 55 visit(i,j+1); 56 if(success!=1&&maze[i+1][j]==0) 57 visit(i+1,j); 58 if(success!=1&&maze[i][j-1]==0) 59 visit(i,j-1); 60 if(success!=1&&maze[i-1][j]==0) 61 visit(i-1,j); 62 if(success!=1) 63 maze[i][j]=0; 64 return success; 65 }
老鼠走迷宫
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。