Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/382.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从何处开始;“生成并测试”;使用Java的方法_Java_Tree_Depth First Search_N Queens - Fatal编程技术网

从何处开始;“生成并测试”;使用Java的方法

从何处开始;“生成并测试”;使用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或更小的整数

我需要使用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算法遍历的数据类型


我不是在乞求别人帮我做作业,我更想要的是一个概念性的演练,了解如何思考#2,以及一个(某种程度上)具体的例子,说明如何给定输入N我可以生成所有N^N列表。

这不是8^8可能的布局,而是8!布局。你表面上会排除(11111111)的可能性,因为每个女王必须在一个独特的行列。要生成所有可能的nqueen,请对列1执行1-8的for循环,然后对列2执行剩余的7个空格,依此类推。最终结果是大约40K的可能性,比8^8小得多。然后,在每个皇后上运行算法,检查其对角线是否有截获,以得到结果。我写了一篇关于8个超级皇后问题的文章:这是一个更复杂的问题,但逻辑相似。