package heima;
import java.util.Set;
import java.util.TreeSet;
/***
* 2. 用1、2、3、4这四个数字,用java写一个main函数,打印出所有不同的排列,
* 如:1234、1243等,要求:"4"不能在第一位,"1"与"3"不能相连。
* @author Administrator
*
*/
public class Test2 {
public static void main(String[] args) {
Set<String> s = new TreeSet<String>();
StringBuilder sb = new StringBuilder();
int aa = 0;
//因为不知道有多少个 所以写了个200
while (aa < 200) {
for (int i = 0; i < 4; i++) {
sb.append((int)(Math.random() * 4 +1));
}
char[] cha = sb.toString().toCharArray();
//4的不要
if (cha[0] == '4') {
sb = sb.delete(0, 4);
continue;
}
for (int i = 0; i < cha.length; i++) {
if (i+1 == 4) {
continue;
}
//13相连的
if (cha[i] == '1' && cha[i+1] == '3') {
sb = sb.delete(0, 4);
continue;
}
//31相连的
if (cha[i] == '3' && cha[i+1] == '1') {
sb = sb.delete(0, 4);
continue;
}
}
s.add(sb.toString());
sb = sb.delete(0, 4);
aa++;
}
//有多少个
System.out.println(s.size());
for (String string : s) {
System.out.println(string);
}
}
}
|