Java 排列组合问题

2022-05-27 10:43:54 +08:00
 dabai0806

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

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

1078 次点击
所在节点    算法
6 条回复
liprais
2022-05-27 10:55:55 +08:00
两个 for 循环完事
nitmali
2022-05-27 10:58:34 +08:00
int num = (int)Math.pow(2, 5);
for (int i = 1; i < num; i++) {
System.out.println(Integer.toBinaryString(i) );
}
nitmali
2022-05-27 11:00:37 +08:00
@nitmali 改下从 i 从 0 开始,不足五位前面补 0
dabai0806
2022-05-27 11:04:30 +08:00
@nitmali #3 可以 感谢
dabai0806
2022-05-27 11:05:03 +08:00
我刚想到的, 写法有点菜
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
2022-05-27 11:24:49 +08:00
@dabai0806 直接转成二进制就可以了 比如 0 -> "00000"; 1 => "00001"; 2 -> "00010";..... 2^5 - 1 -> "11111"

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/855610

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX