目录
题目描述
有一个 n×nn×n 的国际象棋棋盘(nn 行 nn 列的方格图),请在棋盘中摆放 nn 个受伤的国际象棋皇后,要求:
- 任何两个皇后不在同一行。
- 任何两个皇后不在同一列。
- 如果两个皇后在同一条 45 度角的斜线上,这两个皇后之间行号的差值至少为 3 。
请问一共有多少种摆放方案。
输入描述
输入的第一行包含一个整数 nn。
其中,1≤n≤101≤n≤10。
输出描述
输出一个整数,表示答案。
输入输出样例
示例 1
输入
4
输出
2
思想:n皇后问题的变形 - 回溯
代码
import java.util.*;
// 1:无需package
// 2: 类名必须Main, 不可修改
public class Main {
static int count = 0;
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int n = scan.nextInt();
char[][] chessboard = new char[n][n];
for(char[] c:chessboard){
Arrays.fill(c, '.');
}
backtrack(n, 0, chessboard);
System.out.println(count) ;
scan.close