黑马程序员技术交流社区
标题:
老鼠走迷宫
[打印本页]
作者:
wangxiaopang
时间:
2016-7-15 23:45
标题:
老鼠走迷宫
/*
Algorithm Gossip: 老鼠走迷官
说明老鼠走迷宫是递回求解的基本题型,我们在二维阵列中使用2表示迷宫墙壁,使用1来表示老鼠的行走路径,试以程式求出由入口至出口的路径。(1,1)--(5,5)
解法老鼠的走法有上、左、下、右四个方向,在每前进一格之后就选一个方向前进,无法前进时退回选择下一个可前进方向,如此在阵列中依序测试四个方向,直到走到出口为止,这是递回的基本题,请直接看程式应就可以理解。
*/
#include <stdio.h>
#include <stdlib.h>
void printMap(char arr[7][8]){
for (int i = 0; i < 7; i++) {
printf("%s\n",arr[i]);
}
}
void swap(char arr[7][8], int x1,int y1,int x2,int y2){
char temp= arr[x1][y1];
arr[x1][y1] = arr[x2][y2];
arr[x2][y2] = temp;
}
int main(){
char arr[7][8] ={
"#######",
"#1 #",
"# #",
"# #",
"# #",
"# #",
"#######"
};
//打印地图
printMap(arr);
int num = 0;
int x = 1,y = 1;
char ch = ' ';
// printf("WASD 0123\n");
while (x != 5 || y != 5) {
getchar();
num = arc4random_uniform(4);
switch (num) {
case 0:
if(arr[x-1][y] == ch){
swap(arr,x-1,y,x,y);
x = x - 1;
}
break;
case 1:
if(arr[x][y - 1] == ch){
swap(arr,x,y - 1,x,y);
y =y - 1;
}
break;
case 2:
if(arr[x+1][y] == ch){
swap(arr,x+1,y,x,y);
x = x + 1;
}
break;
case 3:
if(arr[x][y + 1] == ch){
swap(arr,x,y + 1,x,y);
y =y + 1;
}
break;
default:
break;
}
printMap(arr);
printf("%d,%d\n",x,y);
}
printf("出来了?\n");
}
复制代码
作者:
wx_mt2IeaEY
时间:
2016-7-15 23:47
大神好厉害!我摸索了一个星期都还没搞出来呢!
作者:
浪子党
时间:
2016-7-15 23:49
6666,好像以前做过
作者:
不想长大
时间:
2016-7-16 00:41
大神,没注释
作者:
李江波
时间:
2016-7-18 16:56
没注释,差评、、哈哈
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2