遍历数组所有组合的方法有两种:使用迭代法,通过组合工具类递归生成组合。使用递归法,通过递归函数生成组合,并打印组合内容。
如何遍历数组的所有组合(Java)
遍历数组所有组合的方法有两种:
方法 1:使用迭代法
// arr[] 为要组合的数组 // n 为数组的长度 // r 为组合的元素个数 public static void combination(int[] arr, int n, int r) { int[] data = new int[r]; combinationUtil(arr, data, 0, n - 1, 0, r); } private static void combinationUtil(int[] arr, int[] data, int start, int end, int index, int r) { if (index == r) { for (int j = 0; j < r; j++) { System.out.print(data[j] + " "); } System.out.println(); return; } for (int i = start; i <= end && end - i + 1 >= r - index; i++) { data[index] = arr[i]; combinationUtil(arr, data, i + 1, end, index + 1, r); } }
登录后复制
方法 2:使用递归法
立即学习“Java免费学习笔记(深入)”;
// arr[] 为要组合的数组 // n 为数组的长度 // r 为组合的元素个数 public static void combination(int[] arr, int n, int r) { // 创建一个空的集合来存储组合 List<Integer> combination = new ArrayList<>(); // 调用递归函数来生成组合 combinationUtil(arr, combination, 0, n, r); } private static void combinationUtil(int[] arr, List<Integer> combination, int start, int n, int r) { // 如果已经选择到 r 个元素,则打印组合 if (combination.size() == r) { System.out.println(combination); return; } // 从 start 到 n-1 遍历数组中的每个元素 for (int i = start; i < n; i++) { // 将当前元素添加到组合中 combination.add(arr[i]); // 递归生成剩余的组合 combinationUtil(arr, combination, i + 1, n, r); // 从组合中移除当前元素 combination.remove(combination.size() - 1); } }
登录后复制
以上就是怎么遍历数组的所有组合java的详细内容,更多请关注抖狐科技其它相关文章!
本站文章均为抖狐网站建设摘自权威资料,书籍,或网络原创文章,如有版权纠纷或者违规问题,请即刻联系我们删除,我们欢迎您分享,引用和转载,我们谢绝直接复制和抄袭!感谢...
我们猜你喜欢
-
炉石传说金卡如何查找 炉石传说金卡查找攻略
在炉石传说中,丰富的玩法和精良的制作吸引了众多玩家。这款游戏的画风、配音和游戏体验都得到了高度评价。如果您想更深入地了解炉石传说,欢迎阅读php小编苹果为您整理的其他游戏相关攻略。我们的专业攻略平台将...
-
暗影格斗3弯身诡计招式玩法是什么 游戏攻略精粹
暗影格斗3中,弯身诡计招式如何施展?这招式有何妙用?php小编西瓜将为你带来弯身诡计招式的详解。继续阅读,深入了解这一招式的玩法,揭开它在战斗中的奥秘。 暗影格斗3弯身诡计招式怎么玩 1、弯身诡计通过...
-
Golang 函数并发编程如何将并发应用于实际场景?
使用 go 函数并发编程可以提高应用程序性能和可伸缩性。 案例研究:并发 web 服务器采用并发技术,通过 goroutine 异步处理请求,提升服务器效率,带来以下好处:提高性能:减少延迟,提升吞吐...
-
炒币最低门槛_炒币最低基本要求是什么
了解炒币最低门槛至关重要。通常需要最低存款额(通常在 10 美元到 50 美元之间),身份验证以符合反洗钱法规,选择信誉良好的交易所,并拥有安全可靠的加密货币钱包。还需制定交易策略,包括风险管理和利润...
-
Java SE 开发人员认证准备的 Java Record 考试目标
java记录的引入为开发人员提供了一种新的数据结构,简化了数据对象的处理和创建。通过最新添加的记录模式和嵌套模式,记录处理变得更加高效和动态。让我们首先回顾一下基础知识 - 记录是传统类的轻量级替代品...