美文网首页
回溯算法:八皇后问题

回溯算法:八皇后问题

作者: 云飞扬1 | 来源:发表于2020-10-27 16:30 被阅读0次
class EightQueenQuestion {

    private val result = Array(8) { -1 }

    private var count = 0

    fun calcEightQueens(row: Int) {
        if (row == 8) {
            printQueenMatrix()
            return
        }
        for (i in 0 until 8) {
            if (isOk(row, i)) {
                result[row] = i
                calcEightQueens(row + 1)
            }
        }
    }

    private fun isOk(row: Int, column: Int): Boolean {
        var leftUp = column - 1
        var rightUp = column + 1;
        for (i in row - 1 downTo 0) {
            if (result[i] == column) {
                return false
            }
            if (leftUp >= 0 && result[i] == leftUp) {
                return false
            }
            if (rightUp < 8 && result[i] == rightUp) {
                return false
            }
            leftUp--
            rightUp++
        }
        return true
    }

    /**
     * 但因当前八皇后矩阵
     */
    private fun printQueenMatrix() {
        println("=======打印八皇后 ${++count} =======")
        for (i in 0 until 8) {
            for (j in 0 until 8) {
                if (result[i] == j) {
                    print("Q ")
                } else {
                    print("* ")
                }
            }
            println()
        }
    }

}

调用执行:

EightQueenQuestion().calcEightQueens(0)

相关文章

  • 回溯算法 八皇后问题

    参考小白带你学--回溯算法[https://zhuanlan.zhihu.com/p/54275352]LeetC...

  • 回溯算法--八皇后问题

    8x8 的棋盘,8 个棋子(皇后),每个棋子所在的行、列、对角线都不能有另一个棋子

  • 回溯算法:八皇后问题

    调用执行:

  • 回溯算法之八皇后问题

    问题描述 设计一种算法,打印 N 皇后在 N × N 棋盘上的各种摆法,其中每个皇后都不同行、不同列,也不在对角线...

  • JS回溯算法--八皇后问题

    八皇后问题 在 8×8 格的国际象棋上摆放八个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行、同一列或同一...

  • 算法--策略-回溯八皇后问题

    回溯可以理解为, 通过选择不同的岔路口来通往目的地, 每一步都选择一条路出发, 能进则进, 不能则退回上一步, 换...

  • 八皇后问题,C#语言的实现

    八皇后问题问题描述:八皇后问题,是一个古老而著名的问题,是回溯算法的典型案例。该问题是国际西洋棋棋手马克斯·贝瑟尔...

  • 重写算法:八皇后问题

    八皇后问题,是一个古老而著名的问题,是回溯算法的典型案例。 问题的内容是在国际象棋棋盘上(8*8),放置八个皇后并...

  • 算法:八皇后问题

    八皇后问题,是一个古老而著名的问题,是回溯算法的典型案例。 问题的内容是在国际象棋棋盘上(8*8),放置八个皇后并...

  • 八皇后问题回溯法和迭代法

    数据结构系列文章: 常用的排序 二叉树的4种遍历 八皇后问题 八皇后问题,是一个古老而著名的问题,是回溯算法的典型...

网友评论

      本文标题:回溯算法:八皇后问题

      本文链接:https://www.haomeiwen.com/subject/tedxvktx.html