これは宿題に関する質問です。私はJavaの古典的なn-Queens
問題の解決策を書いています。私のプログラムはthisのように見えますが、それらを印刷する代わりにすべての法的なクイーンのプレースメントのコレクションを返します。私はクイーンズの配置をint[]
と表し、HashSet<int[]>
を使用してSet<int[]>
を返します。プレースメントの順序は重要ではないため、ここではSet
が適切です。Javaの古典nクイーンズに関するインプリメンテーションの質問
問題は、Java配列がhashCode
をオーバーライドせず、同じ値を持つ異なる配列インスタンスが異なるハッシュコードを持つことです。
私はArrays.deepHashCode
でアレイとオーバーライドhashCode
を保持しているラッパークラスQueensPlacements
を、書き込み、およびSet<QueensPlacement>
を返すことができます。しかし、それは冗長であり、控えめであるようです。誰もより良い解決策を提案できますか?
おそらくラッパークラスが良いでしょう - Setが物事をより明白にするので、それは控えめではありません。セット。ハッシュコードのようにint []で他の問題にぶつかるでしょう。たとえば、正確にn個のクイーンズがあることを確認するにはどうすればいいのですか?つまり、サイズはnですか? –
Fakrudeen