dfs-----走迷宫问题
2016-11-18 23:21
253 查看
/*走迷宫问题*/ #include<stdio.h> int maze[50][50]; int fx[4]= {1,-1,0,0}; int fy[4]= {0,0,-1,1}; int n,pos=1; void createGraph() { int i,j; printf("创建邻接矩阵如下:\n"); for(i=1; i<=n; i++) for(j=1; j<=n; j++) scanf("%d",&maze[i][j]); } void out() { printf("\n走出迷宫的路径如下:"); int i,j; for(i=1; i<=n; i++) { printf("\n"); for(j=1; j<=n; j++) if(maze[i][j]>0) printf("V"); else printf("*"); } printf("\n总步数为:%d",pos); } int check(int i,int j,int k) { int flag=1; i=i+fx[k]; j=j+fy[k]; if(i<1||i>n||j<1||j>n) flag=0; else if(maze[i][j]!=0) flag=0; return flag; } void search(int i,int j) { int newi,newj,k; for(k=0;k<4;k++) if(check(i,j,k)==1) { newi=i+fx[k]; newj=j+fy[k]; maze[newi][newj]=pos;//标识走过的方格 pos++; if(newi==n&&newj==n)//(n,n)表示出口 out(); else search(newi,newj); } maze[i][j]=-2;//表示走入死胡同 } int main() { printf("请输入迷宫维数n:"); scanf("%d",&n); createGraph(); maze[1][1]=pos; pos++; search(1,1); return 0; } /* 0表示行,-1表示不可行 0 0 0 0 0 0 0 0 0 -1 -1 -1 -1 0 -1 0 0 0 0 0 -1 0 -1 0 0 -1 0 0 0 0 -1 0 0 -1 0 -1 -1 0 -1 0 0 -1 0 0 0 0 -1 -1 0 -1 0 0 -1 0 0 0 0 -1 -1 -1 -1 -1 -1 0 */
相关文章推荐
- 【POJ】3984 迷宫问题 BFS 与 DFS
- poj 3984 迷宫问题【BFS && DFS】【简单】
- poj 迷宫问题(路径记录)(DFS,BFS)
- POJ-3984迷宫问题dfs
- SDUT 1157-小鼠迷宫问题(BFS&DFS)
- ACM水题-Rescue LK(AC,迷宫问题,DFS求解)
- POJ - 3984 - 迷宫问题 (DFS)
- poj 迷宫问题(路径记录)(DFS,BFS)
- dfs迷宫问题模板题目
- 经典迷宫问题DFS 深度优先
- poj 迷宫问题(路径记录)(DFS,BFS)
- 迷宫问题(maze problem)——深度优先(DFS)与广度优先搜索(BFS)求解
- DFS/BFS 关于迷宫问题
- 迷宫问题 DFS写法 BFS写法
- 迷宫问题(模板)(DFS)
- 迷宫问题(dfs)POJ - 3984
- POJ - 3984 迷宫问题(BFS、DFS)
- POJ 3984 迷宫问题 BFS DFS两种解法
- dfs迷宫问题模板
- 迷宫问题二 统计路径条数(dfs+回溯)