コード備忘録
ネットで見つけた便利なコードサンプル
全組み合わせの列挙
・順列
public static void permutation(String q, String ans){
// Base Case
if(q.length() <= 1) {
System.out.println(ans + q);
}
// General Case
else {
for (int i = 0; i < q.length(); i++) {
permutation(q.substring(0, i) + q.substring(i + 1),
ans + q.charAt(i));
}
}
}
・組合わせ
public static void combination(String q, String ans, int k){
// Base Case
if(ans.length() == k) {
System.out.println(ans);
}
// General Case
else {
while (q.length() > 0) {
combination(q.substring(1), ans + q.charAt(0), k);
q = q.substring(1);
}
}
}
public static void main(String[] args) {
combination("abcd", "", 2);
}
・第2引数ansをprivateなコンストラクタのように扱う
public static void permutation(String q){
permutation(q, "");
}
private static void permutation(String q, String ans){
//省略
}