Проблема восемь ферзей
https://www.luogu.org/recordnew/show/19470456
- Эта проблема была первая мысль была взрывной поиск каждого узла можно, используя задний смотрел ,, но на этот раз сложность конечноиндекс взрыв
- Мы пройденные один раз для каждого слоя может
точно размещать друг на строку и ферзь, если С [х] представляет собой номер столбец строки х Queen, проблема становится полной задачей генерации перестановок. И п от 0 до расположены в общей сложности только п !, По крайней мере , меньше , чем индекс.
import java.util.Scanner;
public class Main{
private int[] col = new int[20];
private boolean[][] use = new boolean[3][100];
private int size;
private int[] result = new int[20];
private int ans = 0;
public void get_data(){
Scanner in = new Scanner(System.in);
size= in.nextInt();
}
public void dfs(int i){
if(i==size+1) {
ans++;
if(ans<=3)
this.output();
return;
}
for(int j=1;j<=size;j++){
if(!use[0][j]&&!use[1][i+j]&&!use[2][i-j+size]) {
result[i] = j;
use[0][j] = use[1][i+j] = use[2][i-j+size] = true;
dfs(i+1);
use[0][j] = use[1][i+j] = use[2][i-j+size] = false;
}
}
}
public void solve(){
dfs(1);
System.out.println(ans);
}
public void output(){
for(int i=1;i<=size;i++){
System.out.print(result[i]+" ");
}
System.out.println();
}
public static void main(String arg[]){
Main obj = new Main();
obj.get_data();
obj.solve();
}
}