引用 | 编辑
billy7074396
2012-11-14 19:36 |
楼主
▼ |
||
x1
编译器是Dev C++ 先读入txt档里面有迷宫的图!! 1代表墙壁 0代表可以走的路 类似这样 0111111111 1000111111 1110110001 1110111111 1110000111 1110110111 1111101101 1111101011 1100000001 1111111110 最外层一定是墙壁所以是1 左上角是0代表入口 右下角是0代表出口 可以走的方向有 八个方向(并非上下左右而已) 要用堆叠写 Stack 上面的程式码是我目前写的!! 可是后面的判断我就不会写了!! 希望大大帮帮忙!! #include <stdio.h> #include &l .. 访客只能看到部份内容,免费 加入会员 x0
|
引用 | 编辑
ChaosX
2012-11-14 19:57 |
1楼
▲ ▼ |
看就知道是资料结构的作业....
你要的部分你可以去抄资料结构课本... 运气好的话通常里面都会有教你怎么做.... 复制程式 void path(void) { int i,row,col,nextRow,nextCol,dir,found = FALSE; offsets move[8] = {{-1,0},{-1,1},{0,1},{1,1},{1,0},{1,-1},{0,-1},{-1,-1}}; //移动方向 element position; mark[1][1] = 1; //起始位置标记为1 top = 0; //堆叠阵列最上面的元素位置为0 stack[0].row=1; stack[0].col=1; stack[0].dir=1; while(top > -1 && !found) //有堆叠而且找不到出口 { position = pop(); //将堆叠最上面的元素拿出来 row = position.row; col = position.col; dir = position.dir; while(dir < 8 && !found) //还有其他方向没有找而且找不到出口 { nextRow = row + move[dir].vert; //产生下一步row位置 nextCol = col + move[dir].horiz; //产生下一步col位置 if(nextRow == EXIT_ROW && nextCol == EXIT_COL) //判定是否为出口 { found = TRUE; //是的话就找到了 } else if(!maze[nextRow][nextCol] && !mark[nextRow][nextCol]) //是否可以走而且是没走过的路 { mark[nextRow][nextCol] = 1; //对找到的下一步做标记 position.row = row; //现在row位置 position.col = col; //现在col位置 position.dir = ++dir; //下次走的方向 push(position); //放入堆叠 row = nextRow; //下次的row位置 col = nextCol; //下次的col位置 dir = 0; //从第一组移动方向开始找起 } else { ++dir; //换下一组移动方向 } } } if(found) //有找到出口的话 { printf("The path is:\n"); printf("row col\n"); for(i=0;i<=top;i++) { printf("%2d%5d \n",stack[i].row,stack[i].col); //印出在堆叠的路径 maze[stack[i].row][stack[i].col]=2; //等等印出迷宫时顺便印出老鼠的路径 } printf("%2d%5d \n",row,col); //印出现在位置 printf("%2d%5d \n",EXIT_ROW,EXIT_COL); //印出出口位置 maze[row][col] = 2; //等等印出迷宫时顺便印出现在位置 maze[EXIT_ROW][EXIT_COL] = 2; //等等印出迷宫时顺便印出终点 } else { printf("The maze does not have a path\n"); //找不到出口 } } x3 |
引用 | 编辑
billy7074396
2012-11-14 20:26 |
2楼
▲ ▼ |
谢谢你的解答喔!!
你的写法跟我课本写的是差不多的!! 也许我不懂的是"堆叠"的架构和写法而已!! 课本写的程式码有些我没学过! 实在是有看没有懂> < !! 不过还是谢谢你的帮忙!! 让我多一个参考~~ x0 |