V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
dabai0806
V2EX  ›  算法

Java 排列组合问题

  •  
  •   dabai0806 · May 27, 2022 · 1497 views
    This topic created in 1433 days ago, the information mentioned may be changed or developed.

    两个数(0 和 1)5 位长度, 怎么获取所有组合列表数组

    java 如何实现, 有第三方库可以直接调用吗(手动狗头)

    6 replies    2022-05-27 11:24:49 +08:00
    F281M6Dh8DXpD1g2
        1
    F281M6Dh8DXpD1g2  
       May 27, 2022
    两个 for 循环完事
    nitmali
        2
    nitmali  
       May 27, 2022
    int num = (int)Math.pow(2, 5);
    for (int i = 1; i < num; i++) {
    System.out.println(Integer.toBinaryString(i) );
    }
    nitmali
        3
    nitmali  
       May 27, 2022
    @nitmali 改下从 i 从 0 开始,不足五位前面补 0
    dabai0806
        4
    dabai0806  
    OP
       May 27, 2022
    @nitmali #3 可以 感谢
    dabai0806
        5
    dabai0806  
    OP
       May 27, 2022
    我刚想到的, 写法有点菜
    int[][] arr = new int[(int) Math.pow(2,5)][5];
    int point = 0;
    for (int i = 0; i < 2; i++) {
    for (int i1 = 0; i1 < 2; i1++) {
    for (int i2 = 0; i2 < 2; i2++) {
    for (int i3 = 0; i3 < 2; i3++) {
    for (int i4 = 0; i4 < 2; i4++) {
    arr[point++] = new int[]{i, i1, i2, i3, i4};
    }
    }
    }
    }
    }
    nitmali
        6
    nitmali  
       May 27, 2022
    @dabai0806 直接转成二进制就可以了 比如 0 -> "00000"; 1 => "00001"; 2 -> "00010";..... 2^5 - 1 -> "11111"
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   5732 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 44ms · UTC 06:04 · PVG 14:04 · LAX 23:04 · JFK 02:04
    ♥ Do have faith in what you're doing.