今有7对数字:两个1,两个2,两个3,...两个7,把它们排成一行。
要求,两个1间有1个其它数字,两个2间有2个其它数字,以此类推,两个7之间有7个其它数字。如下就是一个符合要求的排列:
17126425374635
当然,如果把它倒过来,也是符合要求的。
请你找出另一种符合要求的排列法,并且这个排列法是以74开头的。
注意:只填写这个14位的整数,不能填写任何多余的内容,比如说明注释等。
public static void main(String[] args)
{
int [] a= new int[14];
a[0] = 7;
a[1] = 4;
a[6] = 4;
a[8] = 7;
dfs(a,1);
for (int i:a)
System.out.print(i);
}
public static boolean dfs(int[]a,int n){
if (n==4)//数字4已排列,进行下一个数字
n++;
if (n>6)//只用排1,2,3,5,6,
return true;
for (int i=2; i+1+n<14; i++){
if (a[i+1+n]==0&&a[i] == 0&&i!=6&& i!= 8){
a[i] = a[i+1+n]= n;
if (dfs(a, n+1))//试排下一个数字
return true;
//下一个数字排列不了,回溯到原来的状态
a[i] = a[i+1+n] = 0;
}
}
return false;
}