4つの数字を並べ替えてできる組み合わせをすべて表示するというプログラムを作ろうとしています。
ですがわからないのでまずは数を少なくして3つにして考えてみました。
abc
の3つだと組み合わせは
abc
acb
bac
bca
cab
cba
の6通りになり、
順列の組み合わせなので3×2×1=6通りで全てだと思います。
再帰関数を組み合わせるとできそうな気がするのですがそれをjavaのプログラムで表現する方法が思いつきませんでした。
前提・実現したいこと
1.組み合わせをjavaプログラムで表現する上で大切なポイントはどういうものがあるのでしょうか?
2.アルゴリズムを理解するのが苦手なのでよい訓練方法があればご教授お願いします。
発生している問題・エラーメッセージ
エラーメッセージ
該当のソースコード
ソースコード
試したこと
ネット上に探しているプログラムに似たものがありました。
java
1public class test { 2 public static void main(String[] args){ 3 permutation("abcd", ""); 4 } 5 6 public static void permutation(String q, String ans){ 7 // Base Case 8 if(q.length() <= 1) { 9 System.out.println(ans + q); 10 } 11 // General Case 12 else { 13 for (int i = 0; i < q.length(); i++) { 14 permutation(q.substring(0, i) + q.substring(i + 1), 15 ans + q.charAt(i)); 16 } 17 } 18 } 19}
上記のプログラムは
実行したときにabcd全ての組み合わせが出力されるものでしたが
java
1permutation(q.substring(0, i) + q.substring(i + 1),ans + q.charAt(i));
の部分がどう動いているのか理解できませんでした。
java
1if(q.length() <= 1) { 2System.out.println(ans + q); 3}
の部分で表示されているのはわかりましたがその過程がよくわからない状態です。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
回答4件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/08/26 16:13