/******
* Description:
*用1、2、2、3、4、5这六个数字,用java写一个main函数,打印出所有不同的排列,
*如:512234、412345等,要求: "4 "不能在第三位, "3 "与 "5 "不能相连.
* @Auther: William Way
***************/public class Arrange {
static int ARRAY_LEN = 6;
public static void main(String... argc) {
int[] numbers = { 1, 2, 2, 3, 4, 5 };
int[] selected = new int[ARRAY_LEN];
//StringBuffer selected = new StringBuffer();
selectNum(selected, numbers);
}

public static void selectNum(int[] selected, int[] numbers) {
int total = numbers.length;
for ( int i=0; i<total; i++) {
selected[ARRAY_LEN-total] = numbers[i];
if ( total == 1 ) {
display(selected);
return;
}
else {
int m = 0;
int[] rest = new int[total-1];
for ( int n =0;  n<total; n++) {
if ( n != i ) rest[m++] = numbers[n];
}
selectNum(selected, rest);
}
}
}

public static void display(int[] selected) {
if ( selected[2] == 4 ) return ;
String numStr = selected[0]+""+selected[1]+""+selected[2]+""+selected[3]+""+selected[4]+""+selected[5];
if ( numStr.contains("35") ) return;
System.out.println(numStr);
}}