 黄色区域是存储商品的储位,每个储位都有自己的编号,如A1,A2,B2,….。每个储位中存放着不同的商品。
 蓝色区域P1/P2/P3 是仓库工作人员工作站。
 白色区域是空白区域。
 仓库工作人员只可以自由行走在白色区域与蓝色区域之间,但是仓库工作人员不能跨越任何黄色区域。
 仓库工作人员从储位中捡出商品时,只能站立在储位旁边的空白位置。例如工作人员站在图中的X位置可以捡取存放在C6与B6的商品。注意:工作人员不能在储位的上下方捡取任何商品,例如图中的Y或Z。现在仓库工作人员有5个不同的商品需要捡出。仓库工作人员可能会从P1/P2/P3任何一个工作站出发,捡出商品后再返回起始工作站。请你设计一个程序帮助仓库工作人员计算出最短的捡料顺序与路径。
1. 程序需提供参数允许用户选择起始工作站点。2. 程序需使用简单易懂的方式告诉用户具体的检料路经与顺序(图形界面最好)。3. 请提交原代码的同时提交如下文档 核心算法流程图
 软件说明文档:需说明软件开发语言与平台、软件运行环境、使用方法
 软件体系结构说明4. 软件需要考虑可扩展性。例如当面对更大的仓库的时候,软件是否仍可以使用?

解决方案 »

  1.   

    可不可以这样,将整个图看做一个二维数组store[x][y](一个二维坐标系),比如P1在数组的下标为store[1][0],store[1][1]=A1,然后从P1,P2,P3中任意一个位置循环判断
    (1)当前的横坐标+1或-1是否等于目标坐标的横坐标,且纵坐标相等。
    (2)当前坐标的值是否为空
    (3)坐标边界条件:10>=x>=0,12>=y>=0
    应该是像走迷宫那样,记录每一条可到达的路径。可以定义一个容器Map来保存路径编号及所有路径Map<Integer,List>
    然后计算出list的大小来判断最短路径至于怎么循环就没什么思路了!
    大家一起来想想啊!
      

  2.   

    我重新发了还看不到??
    图的地址是:http://blog.m6699.com/album/20090325/2009032513483625500.jpg
    我这里能看到啊
      

  3.   

    import java.util.*;
    class c{
    public static void main(String[] args){
    int count1=0;
    int count=0;
    ArrayList al=new ArrayList();
    int[] p={1,0};//工作站
    int[] c1={1,1};//五个商品
    int[] c2={1,2};
    int[] c3={1,3};
    int[] c4={3,2};
    int[] c5={6,3};
    al.add(p);
    al.add(c1);
    al.add(c2);
    al.add(c3);
    al.add(c4);
    al.add(c5);
    for(int a=1;a<=5;a++){
    for(int b=1;b<=5;b++){
    if(b==a) continue;
    for(int c=1;c<=5;c++){
    if(c==a||c==b) continue;
    for(int d=1;d<=5;d++){
    if(d==c||d==b||d==a)continue;
    for(int e=1;e<=5;e++){
    if(e==d||e==c||e==b||e==a) continue;
    c1=(int[])al.get(a);
    c2=(int[])al.get(b);
    c3=(int[])al.get(c);
    c4=(int[])al.get(d);
    c5=(int[])al.get(e);
    count1=count;
    count=Math.abs(c1[0]-p[0])+Math.abs(c1[1]-p[1])+Math.abs(c2[0]-c1[0])+Math.abs(c2[1]-c1[1])+Math.abs(c3[0]-c2[0])+Math.abs(c3[1]-c2[1])+Math.abs(c3[0]-c4[0])+Math.abs(c4[1]-c3[1])+Math.abs(c4[0]-c5[0])+Math.abs(c4[1]-c5[1])+Math.abs(c5[0]-p[0])+Math.abs(c5[1]-p[1]);
    if(count>count1&&count1!=0) count=count1;
    }
    }
    }
    }
    }
    System.out.println(count);
    }
    }是我的方法太笨了。。
      

  4.   

    在JAVA基础类里看到这题 你叫我做怎样的想啊
      

  5.   

    php的,还有很多题蛮有意思,以后再发给大家做做!
      

  6.   

    其实就是简单的路径问题,五件商品就是5个点,计算5个点之间各自最短距离,计算5个点到p1/p2/p3之间最短距离,然后找最短便利即可。唯一麻烦的是当两个点之间距离为1时要合并,以及角落的点(即 A10-F10,A1-F1)要特殊处理。