java - 关于Java中经典n-Queens的实现问题

标签 java n-queens

这是一道作业题。我正在为经典 n-Queens 编写解决方案Java 中的问题。我的程序看起来像 this但它会返回所有合法皇后位置的集合,而不是将它们打印出来。我将皇后位置表示为 int[]并返回 Set<int[]>使用 HashSet<int[]>因为它的实现。 (Set 在这里是合适的,因为展示位置的顺序并不重要)。

问题是 Java 数组不会覆盖 hashCode具有相同值的不同数组实例具有不同的哈希码。

我可以写一个包装类 QueensPlacements , 它包含一个数组并覆盖 hashCodeArrays.deepHashCode , 并返回 Set<QueensPlacement> .然而,它似乎冗长而不优雅。有人可以提出更好的解决方案吗?

最佳答案

存在多个实现Set 接口(interface)的标准类。你可以使用 TreeSet并提供您自己的比较器。

关于java - 关于Java中经典n-Queens的实现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4407916/

相关文章:

java - 如何检查我是否以编程方式创建新实例?

java - 如何根据WSDL开启验证-spring boot和spring-ws

java - 八皇后启发式

java - 使用回溯递归的 8 皇后问题

java - Spring 批量调度程序 : Job Listener works only for the first time the job runs

java - 将 @CrossOrigin 与旧注释一起使用

java - 执行使用 native 库(Java、.dll)的 .jar

algorithm - 回溯经典n皇后的时间复杂度分析

Prolog - N-Queens 测验 - 无限循环

c++ - 递归N-骑士问题