我正在使用堆栈而不是递归调用来解决 N 皇后问题,以便找到 N 皇后的解决方案总数。我相信我的程序是有效的,只是我无法弄清楚如何打破寻找解决方案的循环。有哪些方法可以解决这个问题?
这是我的计算机科学课程之一,使用 java。我已经尝试过我的朋友建议的方法,即在当前行位于棋盘内时暂时满足条件,但这导致在找到解决方案之前停止解决方案搜索出现一些问题。我还尝试在堆栈大小为1时跳出循环,但这仅在N = 4时有效,不适用于较大的N值,该程序也可能不适用于N > 4,尚未测试过还没有。
当 N = 5 时以及当
Exception in thread "main" java.util.EmptyStackException
at java.base/java.util.Stack.peek(Stack.java:102)
at java.base/java.util.Stack.pop(Stack.java:84)
at Assignment22.stacker(Assignment22.java:61)
at Assignment22.main(Assignment22.java:11)
我预计程序最终会停止,但我遇到了无限循环,并且根据我尝试过的修复,出现 ArrayIndexOutOfBoundsException 或 EmptyStackException
HUWWW
相关分类