这是一个家庭作业问题。我正在为n-Queens
Java 中的经典问题编写解决方案。我的程序看起来像这样,但它返回所有合法皇后位置的集合,而不是打印出来。我将皇后的位置表示为int[]
并Set<int[]>
使用HashSet<int[]>
它的实现返回。(Set
在这里是合适的,因为展示位置的顺序并不重要)。
问题是 Java 数组不会覆盖hashCode
,并且具有相同值的不同数组实例具有不同的哈希码。
我可以编写一个包装类QueensPlacements
,它包含一个数组并hashCode
用Arrays.deepHashCode
和 return覆盖Set<QueensPlacement>
。然而,它似乎冗长而不优雅。有人可以提出更好的解决方案吗?