受伤的皇后(dfs)

简介: 受伤的皇后(dfs)

记录一道dfs的题目,

这道题对于刚接触dfs的同学来说算是一道不错的题目了,

能够帮助我们理解得更深刻...

题目:受伤的皇后

题目描述

有一个 n×n 的国际象棋棋盘(n 行 n 列的方格图),请在棋盘中摆放 n 个受伤的国际象棋皇后,要求:


任何两个皇后不在同一行。

任何两个皇后不在同一列。

如果两个皇后在同一条 45 度角的斜线上,这两个皇后之间行号的差值至少为 3 。

请问一共有多少种摆放方案。


输入描述

输入的第一行包含一个整数 nn。


其中,1≤n≤10。


输出描述

输出一个整数,表示答案。


输入输出样例

输入

4

输出

2

运行限制

  • 最大运行时间:1s
  • 最大运行内存: 128M
import java.io.*;
public class Main {
    static BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    static BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
    static int max;
    static int[] array = new int[10];
    static int count = 0;//解法数目
    public static void main(String[] args) throws IOException {
        String readLine = br.readLine();
        max = Integer.parseInt(readLine);
        dfs(0);
        bw.write(String.valueOf(count));
        bw.flush();
        br.close();
        bw.close();
    }
    private static void dfs(int n) {
        if (n == max) {
            count++;
            return;
        }
        for (int i = 0; i < max; i++) {
            array[n] = i;
            if (judge(n)) {
                dfs(n + 1);
            }
        }
    }
    private static boolean judge(int n) {
        for (int i = 0; i < n; i++) {
            if (array[i] == array[n] || ((Math.abs(n - i) == Math.abs(array[n] - array[i])) && (n - i < 3))) {
                return false;
            }
        }
        return true;
    }
}
相关文章
|
9月前
【每日一题Day244】LCP 41. 黑白翻转棋 bfs dfs
【每日一题Day244】LCP 41. 黑白翻转棋 bfs dfs
66 0
|
9月前
|
存储 人工智能 BI
【每日一题Day216】LC1377 T 秒后青蛙的位置 | BFS DFS
【每日一题Day216】LC1377 T 秒后青蛙的位置 | BFS DFS
63 0
|
移动开发 算法
DFS深度优先算法 —— AcWing 842. 排列数字AcWing 843. n-皇后问题
DFS深度优先算法 —— AcWing 842. 排列数字AcWing 843. n-皇后问题
126 0
|
机器学习/深度学习 算法 网络协议
算法思想之n-皇后问题
算法思想之n-皇后问题
|
机器学习/深度学习 算法 JavaScript
从 DFS 到回溯法,再看 N 皇后问题
DFS 是深度搜索,是暴力的,是一条道走到黑的,是一次性搜到底的!那么,搜到底发现没有路了,就得回退去找另外的路,再继续莽着搜!既然要回退,就必须保存走过每个点的所有信息,包括先后顺序;这个回退的过程就叫 回溯。
八皇后(dfs全排列)
八皇后(dfs全排列)
95 0
|
机器学习/深度学习 C++
DFS经典问题——八皇后
DFS经典问题——八皇后
284 0
DFS经典问题——八皇后
洛谷P1270 ——“访问”美术馆(dfs读入+树形DP)
洛谷P1270 ——“访问”美术馆(dfs读入+树形DP)
91 0
洛谷P3360 ——偷天换日(dfs读入+树形DP+01背包)
洛谷P3360 ——偷天换日(dfs读入+树形DP+01背包)
100 0
|
定位技术
深搜dfs 解决全排列,地图搜索最短距离
深搜dfs 解决全排列,地图搜索最短距离