組み合わせふたたび 2015/08/29

Javaです。また組み合わせです。

[java]組み合わせ | プログラマメモ2

昔、やったけど、よくわからないコードですね。。。

また組み合わせです。
再帰でぐるぐるです。
みなさんどうやってるんですかね。。

結果
aaa    111    xxx    aaaa    555   
aaa    111    xxx    aaaa    666   
aaa    111    xxx    bbbb    555   
aaa    111    xxx    bbbb    666   
aaa    111    yyy    aaaa    555   
aaa    111    yyy    aaaa    666   
aaa    111    yyy    bbbb    555   
aaa    111    yyy    bbbb    666   
aaa    222    xxx    aaaa    555   
aaa    222    xxx    aaaa    666   
aaa    222    xxx    bbbb    555   
aaa    222    xxx    bbbb    666   
aaa    222    yyy    aaaa    555   
aaa    222    yyy    aaaa    666   
aaa    222    yyy    bbbb    555   
aaa    222    yyy    bbbb    666   
bbb    111    xxx    aaaa    555   
bbb    111    xxx    aaaa    666   
bbb    111    xxx    bbbb    555   
bbb    111    xxx    bbbb    666   
bbb    111    yyy    aaaa    555   
bbb    111    yyy    aaaa    666   
bbb    111    yyy    bbbb    555   
bbb    111    yyy    bbbb    666   
bbb    222    xxx    aaaa    555   
bbb    222    xxx    aaaa    666   
bbb    222    xxx    bbbb    555   
bbb    222    xxx    bbbb    666   
bbb    222    yyy    aaaa    555   
bbb    222    yyy    aaaa    666   
bbb    222    yyy    bbbb    555   
bbb    222    yyy    bbbb    666   




public class Test組み合わせ01 { public static void main(String[] args) { a(); } static void a(){ String[][] sss = {{"aaa", "bbb"},{"111","222" },{"xxx", "yyy"}, {"aaaa", "bbbb"}, {"555", "666"}}; StringBuilder builder = new StringBuilder(); out(builder, sss, new String[sss.length], 0); System.out.println(builder); } static void out(StringBuilder builder, String[][] sss, String[] holder, int pos){ if (sss.length - 1< pos) { print(builder, holder); return; } String[] ss = sss[pos]; for (String s : ss) { holder[pos] = s; out(builder, sss, holder, pos + 1); } } static void print(StringBuilder builder, String...ss){ for (String s : ss) { builder.append(s).append("\t"); } builder.append("\n"); } }

: