Java 解决八皇后问题以产生解决方案
下面是我试图解决8皇后问题,打印一个解决方案。(把8个皇后放在棋盘上,这样他们就不会互相攻击了)。但是,此解决方案仅放置6个皇后。我需要另一个关于我在哪里犯错的意见。我在做这件事时更多的是用BFS的方式,而不是回溯。似乎你的算法在某个点上出现了故障。运行时,我发现以下问题:Java 解决八皇后问题以产生解决方案,java,n-queens,Java,N Queens,下面是我试图解决8皇后问题,打印一个解决方案。(把8个皇后放在棋盘上,这样他们就不会互相攻击了)。但是,此解决方案仅放置6个皇后。我需要另一个关于我在哪里犯错的意见。我在做这件事时更多的是用BFS的方式,而不是回溯。似乎你的算法在某个点上出现了故障。运行时,我发现以下问题: 在主目录中的for循环中,您不断将已访问[i][j]设置为0。即使进行了递归调用,也总是将访问重置为0。事实上,当您同时声明已访问和线路板时,它们将被初始化为充满0的数组。因此,您可以去掉其中的两个set语句。此外,由于重置
已访问[i][j]
设置为0。即使进行了递归调用,也总是将访问重置为0。事实上,当您同时声明已访问
和线路板
时,它们将被初始化为充满0的数组。因此,您可以去掉其中的两个set语句。此外,由于重置了数组,递归函数最终将两个值都设置为0,然后再次查找它们。”
!hasquen
语句中,您应该输出板[row][col]
坐标,该坐标显示已找到的坐标。打印网格前的最终列表显示,已找到并设置了2,4和1,6两次
如果您在运行程序时将设置为0,则在找到6个位置后,程序将停止运行。请正确设置代码格式Cheers Casey,不太习惯此网站上的格式设置。如果您不知道问题所在,则很难判断问题所在。请尝试将问题集中在特定问题上。我很抱歉只得到6个皇后(6个1)的输出。我在第5行和第6行只得到0。请解释代码背后的逻辑。您是否考虑过阅读wiki条目?似乎您的第4行发现是使用左上角皇后解决方案使其无效的原因。