从何处开始;“生成并测试”;使用Java的方法
我需要使用Java中的生成和测试方法来解决“N Queens”问题,因此基本上,如果N=8,我的程序必须生成8^8个可能的列表,并对每个列表进行测试,以返回92个不同的列表,从而解决问题。我还必须使用带有回溯的DFS算法来列举可能性 举个例子,list(2,4,6,8,3,1,7,5)表示第一个皇后是第1列第2行,第二个皇后是第2列第4行,第三个皇后是第3列第6行…以此类推 阻碍我在这方面取得进展的两个主要因素是: 1) 我不知道如何在Java中生成每一个可能的长度为N(以及大小为N或更小的整数)的列表 2) 我真的不明白,一旦我有了所有这些列表,如何将它们抽象为一种可以用DFS算法遍历的数据类型从何处开始;“生成并测试”;使用Java的方法,java,tree,depth-first-search,n-queens,Java,Tree,Depth First Search,N Queens,我需要使用Java中的生成和测试方法来解决“N Queens”问题,因此基本上,如果N=8,我的程序必须生成8^8个可能的列表,并对每个列表进行测试,以返回92个不同的列表,从而解决问题。我还必须使用带有回溯的DFS算法来列举可能性 举个例子,list(2,4,6,8,3,1,7,5)表示第一个皇后是第1列第2行,第二个皇后是第2列第4行,第三个皇后是第3列第6行…以此类推 阻碍我在这方面取得进展的两个主要因素是: 1) 我不知道如何在Java中生成每一个可能的长度为N(以及大小为N或更小的整数
我不是在乞求别人帮我做作业,我更想要的是一个概念性的演练,了解如何思考#2,以及一个(某种程度上)具体的例子,说明如何给定输入N我可以生成所有N^N列表。这不是8^8可能的布局,而是8!布局。你表面上会排除(11111111)的可能性,因为每个女王必须在一个独特的行列。要生成所有可能的nqueen,请对列1执行1-8的for循环,然后对列2执行剩余的7个空格,依此类推。最终结果是大约40K的可能性,比8^8小得多。然后,在每个皇后上运行算法,检查其对角线是否有截获,以得到结果。我写了一篇关于8个超级皇后问题的文章:这是一个更复杂的问题,但逻辑相似。