Java 解决八皇后问题以产生解决方案

Java 解决八皇后问题以产生解决方案,java,n-queens,Java,N Queens,下面是我试图解决8皇后问题,打印一个解决方案。(把8个皇后放在棋盘上,这样他们就不会互相攻击了)。但是,此解决方案仅放置6个皇后。我需要另一个关于我在哪里犯错的意见。我在做这件事时更多的是用BFS的方式,而不是回溯。似乎你的算法在某个点上出现了故障。运行时,我发现以下问题: 在主目录中的for循环中,您不断将已访问[i][j]设置为0。即使进行了递归调用,也总是将访问重置为0。事实上,当您同时声明已访问和线路板时,它们将被初始化为充满0的数组。因此,您可以去掉其中的两个set语句。此外,由于重置

下面是我试图解决8皇后问题,打印一个解决方案。(把8个皇后放在棋盘上,这样他们就不会互相攻击了)。但是,此解决方案仅放置6个皇后。我需要另一个关于我在哪里犯错的意见。我在做这件事时更多的是用BFS的方式,而不是回溯。

似乎你的算法在某个点上出现了故障。运行时,我发现以下问题:

  • 在主目录中的for循环中,您不断将
    已访问[i][j]
    设置为0。即使进行了递归调用,也总是将访问重置为0。事实上,当您同时声明
    已访问
    线路板
    时,它们将被初始化为充满0的数组。因此,您可以去掉其中的两个set语句。此外,由于重置了数组,递归函数最终将两个值都设置为0,然后再次查找它们。”

  • 为了进行调试,在
    !hasquen
    语句中,您应该输出
    板[row][col]
    坐标,该坐标显示已找到的坐标。打印网格前的最终列表显示,已找到并设置了2,4和1,6两次

  • 输出的实际棋盘以一个不可能的解决方案结束:

  • 100 0 0 0 0 0 0

    0 0 0 0 1 0

    0 0 0 1 0 0 0 0

    0 0 1 0 0 0 0 0

    0 0 X 0 Y 0 0

    0 0 Y 0 X 0 0 0

    0 0 0 0 1

    01 0 0 0 0 0 0

    (很抱歉,我无法将数字格式化)

    布局X和布局Y都不符合8皇后规则


    如果您在运行程序时将设置为0,则在找到6个位置后,程序将停止运行。

    请正确设置代码格式Cheers Casey,不太习惯此网站上的格式设置。如果您不知道问题所在,则很难判断问题所在。请尝试将问题集中在特定问题上。我很抱歉只得到6个皇后(6个1)的输出。我在第5行和第6行只得到0。请解释代码背后的逻辑。您是否考虑过阅读wiki条目?似乎您的第4行发现是使用左上角皇后解决方案使其无效的原因。