【面试题】迷宫问题-----深度优先搜索----栈
2012-07-29 20:53
330 查看
//迷宫问题----深度优先搜索------栈 #include <stdio.h> #include <stack> #include <iostream> using namespace std; #define MAX_ROW 5 #define MAX_COL 5 struct point { int row; int col; }; stack<point> s; int maze[MAX_ROW][MAX_COL] = { 0,0,0,0,0, 0,0,0,1,0, 0,1,0,0,0, 0,0,0,0,0, 0,0,0,1,0 }; void print_maze() { for(int i=0; i<MAX_ROW; ++i) { for(int j=0; j<MAX_COL; ++j) { printf("%d ",maze[i][j]); } printf("\n"); } printf("************************\n"); } struct point predecessor[MAX_ROW][MAX_COL] = { {{-1,-1},{-1,-1},{-1,-1},{-1,-1},{-1,-1}}, {{-1,-1},{-1,-1},{-1,-1},{-1,-1},{-1,-1}}, {{-1,-1},{-1,-1},{-1,-1},{-1,-1},{-1,-1}}, {{-1,-1},{-1,-1},{-1,-1},{-1,-1},{-1,-1}}, {{-1,-1},{-1,-1},{-1,-1},{-1,-1},{-1,-1}} }; void visit(int row,int col,struct point pre) { point visit_point = {row,col}; maze[row][col] = 2; predecessor[row][col] = pre; s.push(visit_point); } int main() { point p = {0,0}; maze[p.row][p.col] = 2; s.push(p); while(!s.empty()) { p = s.top(); s.pop(); //抵达目的地 if(p.row == MAX_ROW-1 && p.col == MAX_COL-1) { break; } //向下移动 if(p.row+1 < MAX_ROW && maze[p.row+1][p.col]==0) { visit(p.row+1,p.col,p); } //向右移动 if(p.col+1 < MAX_COL && maze[p.row][p.col+1]==0) { visit(p.row,p.col+1,p); } ////向上移动 //if(p.col-1 >= 0 && maze[p.row][p.col-1]==0) //{ // visit(p.row,p.col-1,p); //} ////向左移动 //if(p.row-1>=0 && maze[p.row-1][p.col]==0) //{ // visit(p.row-1,p.col,p); //} print_maze(); } if(p.row == MAX_ROW-1 && p.col == MAX_COL-1) { printf("(%d,%d)\n",p.row,p.col); while(predecessor[p.row][p.col].row != -1) { p = predecessor[p.row][p.col]; printf("(%d,%d)\n",p.row,p.col); } } else { cout <<"NO Path"<<endl; } return 0; }
相关文章推荐
- 用深度优先搜索解迷宫问题
- 用深度优先搜索解迷宫问题 By LYLtim
- 写给妹妹的编程札记 4 - 搜索: 迷宫问题 - 深度优先搜索
- 深度优先搜索例1--走迷宫问题
- 迷宫问题的求解方式:应用深度优先和广度优先的搜索
- 求解:栈的应用 深度优先搜索:迷宫问题
- 深度优先搜索——迷宫问题(华为oj)
- 用深度优先搜索解迷宫问题
- scala 广度优先搜索解决迷宫问题
- 第十二周项目5—迷宫问题之图深度优先遍历加法
- 迷宫问题(maze problem)——深度优先(DFS)与广度优先搜索(BFS)求解
- 迷宫--深度优先搜索
- 深度优先搜索——迷宫
- 栈与队列的应用——深度、广度优先搜索迷宫出口
- (第十二周项目5)迷宫问题之图深度优先遍历解法
- 第十二周项目5-迷宫问题之图深度优先遍历解法
- nyoj 部分和问题(深度优先搜索DFS)
- 第12周项目5-迷宫问题之图深度优先遍历解法
- 该深度优先搜索算法查找钥匙的程序之问题~~
- 深度优先搜索DFS详解(百练2815 城堡问题)