这不是很像迷宫问题吗???要用到数据结构中的堆栈,或是递归(不过递归一般比较慢)
用堆栈做就是用试探法。定义一个5*5(或6*6有围墙的 )的整形数组,用1代表有障碍物,0代表没有。在编程初期用一个固定的数组作迷宫便于调试。在起点与终点分别用-1与2 来表示。(在迷宫周围最好要再设一层围墙所以有6*6的,围墙用什么数字只要不与用过的-1,0,1,2相同就可。)可以行走的方向有八个方向与四个方向之分,如果用四个方向的当然容易(不过我与我的小组当时做的是八个方向的)决定下来后就是算法的问题了,要用到几个结构体。一个结构体中放的是前一步行走方向(用四个数表示上下左右四个值如果是八个方向当然有八个数走那个方向就填那个数),前一步的座标(X Y),当前座标(X Y)未完,吃饭先。SORRY

解决方案 »

  1.   

    接上:结构体中还有一个就是当前正确的步数。对了忘了还有个数是标明此路不通用的(左上、上、右上、右、右下、下、左下、左分别为000、001、010、011、100、101、110、111)这样下一步定义一个结构体数组与一个结构体变量。然后做两个函数,分别是入栈PUSH与出栈POP函数和访问函数VISIT。具体走法是从入口出发:1、在四个(或八个方向)中按顺时针(或其它顺序)选取下一步的座标(下一步座标不可能是当前及已走过的),再看看当前座标是不是可走的(不是1也不是超过数组下标或墙)或是不是出口 2。(方向与XY座标增量的关系不用我说吧??)如果是可走的,再将前一步行走方向,前一步的座标(X Y),当前座标(X Y),当前正确的步数都保存下来,压入堆栈里。如果是出口就结束打出当前走了多少步并按堆栈里存的座标标出路来。2、继续按1的方法走下去如果走到一个地方周围都是死路,那只好标上此路不通,将堆栈中栈顶元素弹出(POP)取前一步的座标作为当前的座标,用访问函数(VISIT)访问弹出后的顶元素得到前一步行走方向前一步的座标(X Y)等。这样等于退回到前一步。再重复 1的做法。如果退回到起点还没能找到出路,说明无路可走。上面的思路仅供参考。。
      

  2.   

    各路高手,你们好!
        最近,小弟遇到一个难题,望各路高手能帮手解决, THANKS!
                        E-MAIL:[email protected]
        问题是这样的:
          有一数组(0-24),为一个方框,由25个小方格组成即数组(0-24)。25个小方格里面有一些障碍物(且不是固定的)。
          要求: 在25个方格中输入任一点作为入口,以数组的最后一个(24)为出口即最后一个方格。请求出共有多少条路径?写出逻辑思维方法
      

  3.   

    这句话要改改:
    对了忘了还有个数是标明此路不通用的。此外我的方向是这样设的(左上、上、右上、右、右下、下、左下、左分别为000、001、010、011、100、101、110、111)这样下一步定义一个结构体数组与一个结构体变量。然后做两个函数,分别是入栈PUSH与出栈POP函数和访问函数VISIT。具体走法是从入口出发:
      

  4.   

    云霄大哥:
           你好,谢谢你的指点。上述问题如果不规定入口和出口,请问编程思路还是这样吗? 请急复 THANKS!