java - (Java) 查找数字数组的所有可能组合
问题描述
我正在用 Java 编写一个程序,它可以创建给定数量的数字的所有可能组合。例如,如果您有一个 {1,2,3,4} 数组,我需要编写一个程序,根据公式 2^(Array.length) 创建所有可能的组合,因为我有 4 个数字,我的总可能组合是 2^4 = 16。样本输出为
{} {1} {1,2} {1,2,3} {1,2,3,4} {2} {2,3} {2,3, 1} {2,3,4} {3} {3,1} {3,1,4} {3,4} {4} {4,1} {4,2}
该概念与 (F,F,F,F) (F,F,F,T) (F,F,T,T) 等真值表相同。
我用循环和递归尝试了很多东西,但似乎无法得到它,而且我觉得自己像个白痴,所以非常感谢任何帮助
到目前为止我所拥有的
public class PractiveProblem9 {
public static void main(String[] args) {
String s = "1234";
permute(s.toCharArray(), 0);
}
public static void swap(char[] array, int i, int j) {
char temp = array[i];
array[i] = array[j];
array[j] = temp;
}
public static void permute(char[] array, int n) {
if (n == array.length - 1) {
System.out.println(String.valueOf(array));
}
for (int i = n; i < array.length; i++) {
swap(array, n, i);
permute(array, n + 1);
swap(array, n, i);
}
}
}
到目前为止的输出是
1342
1432
1423
2134
2143
2314
2341
2431
2413
3214
3241
3124
3142
3412
3421
4231
4213
4321
4312
4132
4123
解决方案
推荐阅读
- javascript - 带逗号和两位小数的数值格式
- javascript - 嵌套列表权重总和 javascript
- c++ - 从方法修改指针指针字段
- ios - VSTS - 使用 Hosted Mac 的 CI-CD 管道
- android - ionic 未指定网络安全配置
- vim - vim/neovim 可以在粘贴文本后立即执行命令吗?
- java - 如何将对象或数组从 html 页面发送到 POST 方法,使用 Thymeleaf 和 spring
- django - 在Django视图中获取scrapy结果
- swift - 在 Documents 目录中映射 mp3 并转换为 AVPlayerItems
- c++ - 左键单击时QT QTextBrowser禁用写入位置