迷宫问题求解。
迷宫是m×n的字符矩阵,存储于文件中,其格式的例子如下:
6
8
########
SOOOOOOO
#O####O#
OOO#OEOO
####O###
######O#
前两个数字为迷宫的行数m与列数n,后面各行为迷宫字符矩阵。其中#表示墙壁,O表示道路,S与E分别表示起点和终点(分别只有一个)。任意输入一个迷宫文件,判断出是否存在从S到E的路径,如果存在,给出从S到E的最少移动步数和对应的移动方案(每上下左右移动一个字符为一步,不能穿过墙壁和移出迷宫外)。

解决方案 »

  1.   

    只是个想法用多线程处理,
    run函数实现 
    参数:子线程计数器,当前坐标,子线程迷宫图将子线程迷宫图当前点位置置为'n',计数器+1,
    在当前点判断
     相邻点是否为'E' 
       如果是则将字线程计数器与计数器比较 小于或计数器==-1则更新计数器,更新路径n-n-...-e。
    否则判断
     相邻点是否为'O' 
       如果有则启动等数量的新线程并传递'O'点坐标,子线程计数器,子线程迷宫图。 
    否则
     销毁线程。主函数以参数 'S'点坐标,迷宫图,计数器=-1启动线程。结果计数器==-1 则路径不存在 
    计数器!=-1 路径存在
     计数器+1为最小移动步数
     路径为最小移动方案
    异常处理:
     点位置在范围内。