为了账号安全,请及时绑定邮箱和手机立即绑定

有比较优雅的写法吗?

有比较优雅的写法吗?

胡子哥哥 2019-03-21 18:15:45
大家好,想达到如下目的,List1 {"A1", "A2", "A3", "A4"}List2 {"B1", "B2", "B3", "B4", "B5"}List3 {"C1", "C2", "C3", "C4", "C5"}List4 {"D1", "D2", "D3"}List5 {"E1", "E2", "E3", "E4"}List6 {"F1", "F2", "F3", "F4", "F5"}A1,B1,C1,D1,E1,F1A1,B1,C1,D1,E1,F2A1,B1,C1,D1,E1,F3...A1,B1,C1,D1,E2,F1A1,B1,C1,D1,E2,F2A1,B1,C1,D1,E2,F3...实现这样的组合,除了6重循环外,有什么优雅的写法吗?
查看完整描述

4 回答

?
浮云间

TA贡献1829条经验 获得超4个赞

6重循环逻辑上更简单些,不想要这种写法也是可以的,给你个参考吧;
[code="java"]
import java.util.Arrays;
import java.util.List;

public class Mm {

/**
 * @param args
 */
public static void main(String[] args) {
    // int[] a = new int[] { 123, 11 };
    List<String>[] t = new List[] { Arrays.asList("1", "2", "3", "4"),
            Arrays.asList("a", "b", "c"), Arrays.asList("甲", "乙", "丙", "丁") };

    int[] pos = new int[t.length];

    while (!print(t, pos)) {
        addpos(t, pos, pos.length - 1);
    }
}

public static void addpos(List<String>[] t, int[] pos, int p_length) {
    if (p_length < 0)
        return;
    if (pos[p_length] < t[p_length].size() - 1) {
        pos[p_length] = pos[p_length] + 1;
    } else {
        pos[p_length] = 0;
        addpos(t, pos, p_length - 1);
    }
}

public static boolean print(List<String>[] t, int[] pos) {
    boolean end = true;
    for (int i = 0; i < pos.length; i++) {
        System.out.print(t[i].get(pos[i]));
        end = end && t[i].size() - 1 == pos[i];
    }

    System.out.println();
    return end;
}

}


查看完整回答
反对 回复 2019-04-26
  • 4 回答
  • 0 关注
  • 486 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信