これは宿題の質問です。n-Queens
Javaの古典的な問題の解決策を書いています。私のプログラムは次のようになりますが、それらを出力する代わりに、すべての正当なクイーン配置のコレクションを返します。クイーンの配置を として表し、その実装として使用してint[]
返します。(配置の順序は重要ではないため、ここでは適切です)。Set<int[]>
HashSet<int[]>
Set
問題は、Java 配列がオーバーライドhashCode
されず、同じ値を持つ異なる配列インスタンスが異なるハッシュ コードを持つことです。
QueensPlacements
配列を保持し、でオーバーライドhashCode
するArrays.deepHashCode
ラッパークラスを記述できますSet<QueensPlacement>
。ただし、冗長でエレガントではないようです。誰でもより良い解決策を提案できますか?