题目描述
蓝桥学院由 2121 栋教学楼组成,教学楼编号 11 到 2121。对于两栋教学楼 a 和 b,当 a 和 b 互质时,a 和 b 之间有一条走廊直接相连,两个方向皆可通行,否则没有直接连接的走廊。
小蓝现在在第一栋教学楼,他想要访问每栋教学楼正好一次,最终回到第一栋教学楼(即走一条哈密尔顿回路),请问他有多少种不同的访问方案?
两个访问方案不同是指存在某个 i,小蓝在两个访问方法中访问完教学楼 i 后访问了不同的教学楼。
import java.util.Scanner;
// 1:无需package
// 2: 类名必须Main, 不可修改
public class Main {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
//在此输入您的代码...
int[] classes = new int[22];
for(int i=0;i<classes.length;i++){
classes[i] = 0;
}
// long re = count(classes,1);
System.out.println(881012367360L);
scan.close();
}
public static long count(int[] classes,int num){
long allCount = 0,flag = 1;
for(int i = 2;i<classes.length;i++){
if(classes[i] == 0){
flag = 0;
if(gcd(i,num) == 1){
classes[i] = 1;
allCount += count(classes,i);
classes[i] = 0;
}
}
if(i == classes.length-1 && classes[1] != 1){
if(flag == 0){
return allCount;
}
return ++allCount;
}
}
return allCount;
}
public static int gcd(int i,int num){
int t = 0;
while(num!=0){
t = num;
num = i%num;
i = t;
}
return i;
}
}