题目出处
代码里有解释(深搜):
package search;
import java.util.Scanner;
public class P1219 {
static int n, sum = 0;
static int[] arr;
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
n = sc.nextInt();
arr = new int[n];
dfs(0);
System.out.println(sum);
}
public static void dfs(int now) {
if (now == n) {
if (sum < 3) {
print();
}
sum++;
return;
}
for (int i = 0; i < n; i++) {
arr[now] = i;
boolean ok = false;
for (int j = 0; j < now; j++) {
if (arr[j] == arr[now] || now - j == arr[now] - arr[j] || j -now == arr[now] - arr[j]) {
ok = true;
break;
}
}
if (!ok) {
dfs(now+1);
}
}
}
public static void print() {
for (int i = 0; i < n; i++) {
System.out.print(arr[i] + 1 + " ");
}
System.out.println();
}
}