给出一个由123456组成的六位数,要求:4不能在第三位,2不能与5相邻,如123456,234561,写出所有的组合,用java编写一个程序

解决方案 »

  1.   

    http://joezheng123.javaeye.com/blog/353081public class test1   
    {   
        private int[] numbers = new int[]   
        { 1, 2, 3, 3, 4, 5 };   
        public int n;   
        private String lastResult = "";   
      
        private boolean validate(String s)   
        {   
            if (s.compareTo(lastResult) <= 0)   
                return false;   
            if (s.charAt(2) == '4')   
                return false;   
            if (s.indexOf("35") >= 0 || s.indexOf("53") >= 0)   
                return false;   
            return true;   
        }   
      
        public void list(String index, String result)   
        {   
            for (int i = 0; i < numbers.length; i++)   
            {   
                if (index.indexOf(i + 48) < 0)   
                {   
                    String s = result + String.valueOf(numbers[i]);   
                    if (s.length() == numbers.length)   
                    {   
                        if (validate(s))   
                        {   
                            System.out.println(s);   
                            lastResult = s;   
                            n++;   
                        }   
                        break;   
                    }   
                    list(index + String.valueOf(i), s);   
                }   
            }   
        }   
      
        public static void main(String[] args)   
        {   
            test1 t = new test1();   
            t.list("", "");   
            System.out.println("总数:" + t.n);   
      
        }