算法分析——走迷宫问题
2011-08-19 20:31
465 查看
#include <stdio.h> int visit(int i , int j); int maze[7][7] = { {2,2,2,2,2,2,2}, {2,0,0,0,0,0,2}, {2,0,2,0,2,0,2}, {2,0,0,2,0,2,2}, {2,2,0,2,0,2,2}, {2,0,0,0,0,0,2}, {2,2,2,2,2,2,2}, }; int si = 1 , sj = 1 ; int ei = 5 , ej = 5 ; int success = 0 ; int main() { int i , j ; printf("Display the maze :\n"); for(i = 0 ; i < 7 ; i++) { for(j = 0 ; j < 7 ; j++) { if(maze[i][j] == 2) { printf("■"); } else { printf(" "); } } printf("\n"); } if(visit(si , sj) == 0) { printf("\nNot found exit !"); } else { printf("Display the maze :\n"); for(i = 0 ; i < 7 ; i++) { for(j = 0 ; j < 7 ; j++) { if(maze[i][j] == 2) { printf("■"); } else if(maze[i][j] == 1) { printf("◇"); } else { printf(" "); } } printf("\n"); } } return 0 ; } int visit(int i , int j) { maze[i][j] = 1 ; if(i == ei && j == ej) success = 1 ; if(success != 1 && maze[i][j + 1] == 0) visit(i , j + 1); if(success != 1 && maze[i + 1][j] == 0) visit(i + 1 , j); if(success != 1 && maze[i - 1][j] == 0) visit(i - 1 , j); if(success != 1 && maze[i][j - 1] == 0) visit(i , j - 1); if(success != 1) maze[i][j] == 0 ; return success ; }
显示所有路径:
#include <stdio.h> int visit(int i , int j); int maze[9][9] = { {2, 2, 2, 2, 2, 2, 2, 2, 2}, {2, 0, 0, 0, 0, 0, 0, 0, 2}, {2, 0, 2, 2, 0, 2, 2, 0, 2}, {2, 0, 2, 0, 0, 2, 0, 0, 2}, {2, 0, 2, 0, 2, 0, 2, 0, 2}, {2, 0, 0, 0, 0, 0, 2, 0, 2}, {2, 2, 0, 2, 2, 0, 2, 2, 2}, {2, 0, 0, 0, 0, 0, 0, 0, 2}, {2, 2, 2, 2, 2, 2, 2, 2, 2}, }; int si = 1 , sj = 1 ; int ei = 7 , ej = 7 ; int success = 0 ; int main() { int i , j ; printf("Display the maze :\n"); for(i = 0 ; i < 9 ; i++) { for(j = 0 ; j < 9 ; j++) { if(maze[i][j] == 2) { printf("█"); } else { printf(" "); } } printf("\n"); } visit(si , sj) ; return 0 ; } int visit(int i , int j) { int m , n ; maze[i][j] = 1 ; if(i == ei && j == ej) { printf("Display the maze :\n"); for(m = 0 ; m < 9 ; m++) { for(n = 0 ; n < 9 ; n++) { if(maze[m] == 2) { printf("█"); } else if(maze[m] == 1) { printf("◇"); } else { printf(" "); } } printf("\n"); } success = 1 ; } if(maze[i][j + 1] == 0) visit(i , j + 1); if(maze[i + 1][j] == 0) visit(i + 1 , j); if(maze[i - 1][j] == 0) visit(i - 1 , j); if(maze[i][j - 1] == 0) visit(i , j - 1); maze[i][j] = 0 ; return success ; }
相关文章推荐
- 迷宫问题算法分析
- 算法分析——走迷宫问题
- 迷宫问题算法分析
- 迷宫问题的算法(优于递归、深度优先、广度优先)
- 求最大和连续子向量问题的算法分析
- 算法分析最小重量机器设计问题
- 围住神经猫,迷宫最短路径算法分析
- PHP树的深度编历生成迷宫及A*自动寻路算法实例分析
- Josephus问题及其推广 分析和算法优化
- 【计算机算法分析】动态规划法——矩阵连乘问题
- 矩阵连乘问题的算法分析
- 搜索算法之迷宫问题
- 回溯算法基础---皇后问题,骑士游历,迷宫求解
- javascript动画、运动算法详细解释与分析 (二、javascript动画 时间精度问题)
- 全排列问题算法分析与实现(递归、非递归)
- 【算法设计与分析】7、0/1背包问题,动态规划
- HDU1003 Max Sum 最大子序列和的问题【四种算法分析+实现】
- 榆木脑壳练算法之迷宫寻路问题
- 【数据结构和算法分析】循环链表及约瑟夫问题
- 算法分析与设计矩阵连乘问题