用1、2、2、3、4、5这六个数字,用java写一个程序,打印所有的不同的排序,如:512234、412345、等,要求:4不能在第三为,3与5不能相连。

解决方案 »

  1.   

    这个,以前见过了啊~
    http://topic.csdn.net/u/20070114/14/1170E023-E8F0-4331-8BD8-516C6F1E40DA.html
      

  2.   

    还有个地方,不过没看明白
    package yudylaw.java.sorted;import java.util.ArrayList;import java.util.List;
    import java.util.Set;
    import java.util.TreeSet;/**
     * 输出1,2,2,3,4,5的所有排列组合,4不能在第三位,3和5不能相邻
     * 
     * 采用字符跟踪
     * @author ****
     * 10:56:38 PM Apr 23, 2009
     */
    public class Sorted {
        
        public static List<String> find(List<String> list) {
            List<String> rtn = new ArrayList<String>();
            String str;
            for (int i = 0; i < list.size(); i++) {
                str = list.get(i); 
                list.remove(i);
                if (list.size() == 0) { 
                    rtn.add(str);
                } else {
                    List<String> sList = find(list); 
                    for (String s : sList) {
                        rtn.add(str + s); 
                        if (s.length() == 5) {
                            addNumber(str + s);
                        }
                    }
                }
                list.add(i, str);
            }
            return rtn; 
        }    /**
         * 通过这个来排除
         * @param str
         */
        public static void addNumber(String str) {
            if (str.charAt(2) == '4' || str.contains("35") || str.contains("53")) {
                return;
            }
            set.add(str);
        }    public static Set<String> set = new TreeSet<String>();    public static void main(String[] args) {
            List<String> list = new ArrayList<String>();
            list.add("1");
            list.add("2");
            list.add("2");
            list.add("3");
            list.add("4");
            list.add("5");
            find(list);
            System.out.println(set.size());
            int cols = 10;
            for (String s : set) {
                System.out.print(s + " ");
                if (cols-- == 1) {
                    System.out.println();
                    cols = 10;
                }
            }
        }
    }http://topic.csdn.net/u/20090512/17/ff3d65c3-4d29-4d81-913c-4f533b6a5d8a.html