有如下字符串:"北京+长沙/武汉+西安/兰州+新疆"
字符是不定长的,'+'号表示中转,'/'表示或 也就是 长沙/武汉 可以在长沙中转也可以在武汉中转   
要求得到:a.北京->长沙->西安->新疆
  b.北京->长沙->兰州->新疆
  c.北京->武汉->西安->新疆
  d.北京->武汉->兰州->新疆
请大家帮忙,成份感谢.
C#那边看到的一个题,想到了图的深度遍历,但是应该怎么实现呢,有没有人试试

解决方案 »

  1.   

    图的遍历有深度优先和广度优先两种,自己google或百度吧。
      

  2.   

    看来这个帖子结不了了
    http://topic.csdn.net/u/20100428/10/968e4998-06c5-4d91-a040-39299691cf31.html
      

  3.   

    写了几行丑陋的代码     lz自己去重构吧private static final String CHANGE = "\\+"; private static final String TRANSLATE = "\\/"; public static List encodeString(String info) {
    List infoList = new ArrayList();
    String[] infos = info.split(CHANGE);
    String result = null;
    for (int i = 0; i < infos.length; i++) {
    String[] temp = infos[i].split(TRANSLATE);
    if (infoList.size() > 0) {
    int size = infoList.size();
    for (;;) { for (int j = 0; j < temp.length; j++) {
    String append = (String) infoList.get(0);
    append += temp[j] + "->";
    infoList.add(append);
    }
    size--;
    infoList.remove(0);
    System.out.println(size);
    if (size < 1)
    break;
    }
    } else { for (int j = 0; j < temp.length; j++) {
    result = new String();
    result += temp[j] + "->";
    infoList.add(result);
    }
    } }
    return infoList;
    }
      

  4.   

    可以用图的遍历来解决
    如果用图来表示的话,你要先构造节点
    伪代码:
    Node{
       Node(String s,List<Node> l){
             this.s=s;
             next=l;
      }
       String s;
       List<Node> next;
    }用节点构造好这个图可以用递归打印来遍历
    PrintGraphics(Node d){
       System.out.println(d.s);
       for(int i=0;i<d.next.size;i++) PrintGraphics(d.next.get(i));
    }
      

  5.   

    结贴了,也不知道是因为我的等级问题还是因为什么
    同样一个帖子,在C#区就能得到很好的回答
    在java区就会有人告诉你“百度”“谷歌”
    我也不是说没代码就没有发言权
    只是一般我都会自己实践一下才把问题拿出来跟大家分享的
    如果耽搁您时间了 抱歉