AcWing 4211. 序列重排(JAVA)
原题链接
困难
作者:
husheng
,
2022-03-31 19:23:45
,
所有人可见
,
阅读 142
import java.util.*;
public class Main {
static long n;
static boolean[] vis;
static long num=0;
static long[] ss=new long[105];
public static void dfs(long[] arr,long[] str,int cur) {
if(cur==n) {
for(int i=0;i<n;i++) {
System.out.print(str[i]+" ");
}
System.out.println();
return ;
}
for(int i=0;i<n;i++) {
if(!vis[i]) {
vis[i]=true;
if(cur==0) {
str[0]=arr[i];
}
else {
if(arr[i]==str[cur-1]*2||arr[i]*3==str[cur-1]) {
str[cur]=arr[i];
}
else {
vis[i]=false;
continue;
}
}
dfs(arr,str,cur+1);
vis[i]=false;
}
}
}
public static void main(String[] args) {
Scanner input=new Scanner(System.in);
n=input.nextLong();
long[] arr=new long[105];
long[] str=new long[105];
vis=new boolean[105];
for(int i=0;i<n;i++) {
arr[i]=input.nextLong();
}
dfs(arr,str,0);
}
}