这是一道作业题。我正在为经典 n-Queens
编写解决方案Java 中的问题。我的程序看起来像 this但它会返回所有合法皇后位置的集合,而不是将它们打印出来。我将皇后位置表示为 int[]
并返回 Set<int[]>
使用 HashSet<int[]>
因为它的实现。 (Set
在这里是合适的,因为展示位置的顺序并不重要)。
问题是 Java 数组不会覆盖 hashCode
具有相同值的不同数组实例具有不同的哈希码。
我可以写一个包装类 QueensPlacements
, 它包含一个数组并覆盖 hashCode
与 Arrays.deepHashCode
, 并返回 Set<QueensPlacement>
.然而,它似乎冗长而不优雅。有人可以提出更好的解决方案吗?
最佳答案
存在多个实现Set
接口(interface)的标准类。你可以使用 TreeSet
并提供您自己的比较器。
关于java - 关于Java中经典n-Queens的实现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4407916/