1 から 9 までのすべての数値が 1 回だけ出現するように、3*3 の多次元配列をすべて生成する関数を Java でどのように作成すればよいでしょうか?
ありがとう!
基本的に、 series のすべての順列を探していますが、[1, 2, ... 9]
それらを の行列に分割していることに注意してください3x3
。
順列の数が9!
(階乗 9) であることを数学的に証明するのは簡単です。
順列を生成するアルゴリズムは多数あります。最も便利だと思うものを選択してください。たとえば、ウィキペディアで。
注:これは、OPによると、実際には宿題ではありません。
どこまで行きましたか?宿題のように聞こえますが、それで問題ありません。SO はおそらく役に立ちますが、どれだけの作業を行ったかを示す必要があります。SO はより良いプログラマーを作ることです。あなたができることを私たちに見せてください。
私は小さく始めますが、2*2 配列の場合はどうしますか? 手動で行います。つまり、可能なすべての 2*2 配列を書き始めます。どのようにしますか?次に、コードでそれを行う方法を考えてください。2*2 に対して実行すると、結果が適切に見えるかどうかを目で確認できるため、正しい軌道に乗っているかどうかがわかります。
これは基本的に順列の問題です。小さな数でそれを見つけたら、同じ解決策を拡張する必要があります。