第四题 AC
public class Main {
private static int[] arr={0,1,2,3,4,5,6,7,8,9};
private static int count=0;
private static Set<String> set=new HashSet<>();
public static void main(String[] args){
Scanner in=new Scanner(System.in);
count=0;
int n=in.nextInt();
if(n<=1)
{
System.out.println(0);
return;
}
int[] arr=new int[n];
for(int i=0;i<n;i++)
{
arr[i]=in.nextInt();
}
is(arr,0);
System.out.println(count);
}
private static void is(int[] arr,int index)
{
if(index>=arr.length)
{
String str=Arrays.toString(arr);
if(!set.contains(str))
{
if(is(arr))
{
count++;
}
set.add(str);
}
}
for(int i=index;i<arr.length;i++)
{
swap(arr,i,index);
is(arr,index+1);
swap(arr,i,index);
}
}
private static void swap(int[] arr,int i,int j)
{
if(i==j)
{
return;
}
int temp=arr[i];
arr[i]=arr[j];
arr[j]=temp;
}
private static boolean is(int[] arr)
{
for(int i=1;i<arr.length;i++)
{
if(!is(arr[i-1]+arr[i]))
{
return false;
}
}
return true;
}
private static boolean is(int n)
{
double d=Math.sqrt(n);
double ds=0;
for(int a:arr)
{
for(int i=0;i<arr.length;i++)
{
ds=d%arr[i];
if(ds==a)
{
return true;
}
}
}
return false;
}
}