import java.util.ArrayList;
import java.util.Random;
/*题目:用1,2,3,4这四个数字,用java写一个main函数,打印出所有不同的排列。如:1234,1243等。要求:4不能在第一位,1和3不能相连*/
public class Test4 {
public static void main(String[] args) {
ArrayList<Integer> list = new ArrayList<>();
list.add(1);
list.add(2);
list.add(3);
list.add(4);
ArrayList<Integer> newList = new ArrayList<>();
newList.addAll(list); // newList临时存放list里面所有元素
Random r = new Random();
int count=0;
while(count<24){ //总共能产生4*3*2*1种组合
StringBuilder sb = new StringBuilder();
for(int i=0;i<4;i++){ //for循环用来产生一个随机四位数
int index=r.nextInt(list.size()); //随机产生一个角标,用来从list中拿出一个元素
while(index==3){ //第一次循化,如果角标是3(对应的元素是4)
index=r.nextInt(list.size()); //重新产生生成一个角标直到不是3
}
sb.append(list.get(index)); //将这个元素拼接到sb后面
list.remove(index); //拿出一个元素后就把该元素从list中拿出去
}
list.addAll(newList); //重新把临时newList元素添加到list中,用于下次循环
count++;
for(int i=0;i<sb.length()-1;i++){
if(Integer.parseInt(sb.charAt(i)+"")+Integer.parseInt(sb.charAt(i+1)+"")==4){ //若果相邻两个元素相加等于4(1+3),就继续下次循环
continue;
}else{
System.out.println(sb); //如果满足条件,就打印这个四位数
}
}
}
}
} |