题目描述
素数环:从1到n这n个数摆成一个环,要求相邻的两个数的和是一个素数。如,n=8是,素数环为:
1 2 3 8 5 6 7 4
1 2 5 8 3 4 7 6
1 4 7 6 5 8 3 2
1 6 7 4 3 8 5 2
其总数为4
输入
n的值(n不大于15)
输出
打印素数环并输出数量,如果不存在素数环则输出 “no solution!”(不输出双引号)。
这个题是深搜题,给定素数环中第一个值1后,之后就可以每次从2到n开始试探着往里填了,注意在过程中排除非素数、相邻两数和为素数、不能出现重复的数基本就可以了,因为着些值组成的是环因此最后还须判断头尾之和是否为素数。
import java.util.Scanner;
public class 素数环 {
static int cnt=0;
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int[] res = new int[n];
res[0] = 1;//默认第一个为1
dfs(res,n,1);
if(cnt==0) {
System.out.println("no solution!");
}else {
System.out.println(cnt);
}
}
/**