Javaのすべての組み合わせを指定したセット(文字列または整数の配列)を見つける方法の例をいくつか探し出そうとしていました。そして私は、このコードの一部に出くわしてきた(http://introcs.cs.princeton.edu/java/23recursion/Combinations.java.htmlで見つかった私はここで唯一の関連部品をコピーした。。):Javaの組み合わせの組み合わせを見つけるための再帰的アルゴリズム
// print all subsets of the characters in s
public static void comb1(String s) { comb1("", s); }
// print all subsets of the remaining elements, with given prefix
private static void comb1(String prefix, String s) {
if (s.length() > 0) {
System.out.println(prefix + s.charAt(0));
comb1(prefix + s.charAt(0), s.substring(1));
comb1(prefix, s.substring(1));
}
}
// read in N from command line, and print all subsets among N elements
public static void main(String[] args) {
int N = Integer.parseInt(args[0]);
String alphabet = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
String elements = alphabet.substring(0, N);
// using first implementation
comb1(elements);
System.out.println();
}
しかし、私は実際にそれがどのように動作するか理解していません。誰かが説明する気になる?
それはあなたが持つ問題を抱えているコードです、またはそれは基本原則ですか?あなたは鉛筆と紙を持ち、小さなサンプルを歩きたいかもしれません。 N = 2で始まり、コードが "abc"で行うことに従います。 – Bart