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

来源:互联网 发布:易语言收费系统源码 编辑:程序博客网 时间:2024/04/29 19:16

转载:

http://www.blogjava.net/nokiaguy/archive/2008/05/10/199647.html

/*用1、2、2、3、4、5这六个数字,用java写一个程序,打印出所有不同的排列, * 如:512234、412345等,要求:"4"不能在第三位,"3"与"5"不能相连 * */public class TestString {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) {//i+48 Ascii码的48代表的是0String 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) {TestString t = new TestString();t.list("", "");System.out.println("总数:" + t.n);}}import java.util.Set;import java.util.TreeSet;public class TestString02 {public static Set<String> set = new TreeSet<String>();   public static void perm(char[] n, int beg, int end) {       if (beg == end) {           addNumber(String.valueOf(n));       } else {           for (int i = beg; i <= end; ++i) {               swap(n, beg, i);               perm(n, beg + 1, end);               swap(n, beg, i);           }       }   }   public static void swap(char[] n, int x, int y) {       if (x == y || n[x] == n[y]) {           return;       }       char temp = n[x];       n[x] = n[y];       n[y] = temp;   }   public static void addNumber(String str) {       if (str.charAt(2) == '4' || str.contains("35") || str.contains("53")) {           return;       }       set.add(str);   }   public static void main(String args[]) {       char[] number = new char[] { '1', '2', '3', '3', '4', '5' };       perm(number, 0, number.length - 1);       System.out.println(set.size());       int cols = 10;       for (String s : set) {           System.out.print(s + " ");           if (cols-- == 1) {               System.out.println();               cols = 10;           }       }   }}


0 0