递归方法
/**
* 递归计算
* @param rs 最后结果
* @param temprs 当前排列数据内容 上下文
* @param data 待排列数据
* @param all 一共几组 从0计
* @param index 第几组数 从0计
*/
public void cal(List<Object> rs, Map<String, Integer> temprs,List<int[]> data,int all,int index){
int[] temp = data.get(index);//取出该组数据
for(Integer val :temp){
//放到当前排列内容中,map重复key数据覆盖,必要
temprs.put("index"+index, val);
if(index == all){
/*
* 最后一组数据取完,已经每组数据取到一个数据,有一个排列结果
* 产生,放到最后结果中,else继续递归下一组数据取值
*/
rs.add(temprs.values());
System.out.println(temprs.values());
}else{
cal(rs,temprs,data,all,index+1);
}
}
}
测试调用:
int[] a = new int[]{2,4,8};
int[] b = new int[]{3,5,9};
List<int[]> data = new ArrayList<int[]>();
data.add(a);
data.add(b);
List<Object> rs = new ArrayList<Object>();
Map<String, Integer> temprs = new HashMap<String, Integer>();
cal(rs, temprs, data, 1, 0);
System.out.println("排列数:"+rs.size());
输出排列内容:
[3, 2]
[5, 2]
[9, 2]
[3, 4]
[5, 4]
[9, 4]
[3, 8]
[5, 8]
[9, 8]
分享到:
相关推荐
4. **NumTest.java** 可能是一个测试类,用于验证和展示`Combination`、`ArrangeCombine`和`Arrange`类的功能,通过实例化这些类并调用相关方法,打印出所有组合或排列结果。 以上代码只是简单的示例,实际应用中...
4. 缓存优化:对于组合问题,可以考虑使用缓存存储已计算的结果,避免重复计算。 总之,这个资源包提供了一个很好的平台,让你能够深入理解并实践Java中的排列组合算法。通过学习和理解这些代码,你不仅可以增强...
本文将深入探讨Java中实现排列组合算法的方法,帮助开发者更好地理解和运用这些概念。 排列是有序的选择,而组合是无序的选择。在Java中,我们可以使用递归、回溯法或者迭代的方式来实现这两种算法。下面我们将详细...
本文将深入探讨如何在Java中实现排列组合,特别是基于描述中提到的"利用list及set的无序性"的方法。 首先,让我们理解排列和组合的基本概念。排列是指从n个不同元素中取出m(m≤n)个元素,按照一定的顺序排成一列...
这个Java实现会遍历所有可能的排列组合,并将结果存储在一个列表中。在实际应用中,可能需要对结果进行优化,例如使用Set避免重复,或者使用Stream API来简化代码。此外,对于大数据量的输入,还需要考虑性能优化,...
### 排列组合:使用Java计算并按条件排列时间 #### 背景与目标 在计算机科学领域,特别是算法设计中,排列组合是一个非常重要的概念。本文将介绍如何使用Java编程语言实现一种特定的排列组合算法:按照一定条件...
根据给定文件的信息,...通过以上内容,我们详细介绍了Java中m取n排列组合的具体实现方法,包括重复与不重复的情况,以及如何使用for循环嵌套和递归来完成这些任务。这将有助于读者更好地理解和掌握相关的编程技巧。
该资源提供了Java中排列组合的全面指南。文档讲解了排列组合的基本概念,包括如何计算阶乘、如何生成排列和组合,以及如何将这些概念应用于解决实际问题。 此外,文档还提供了各种排列组合算法的详细代码示例和实现...
理解和掌握这部分内容,对于提升Java编程能力以及解决实际问题具有重要意义。在实际编程中,应注重算法的效率和代码的可读性,合理运用各种数据结构和设计模式,以实现高效、灵活的组合排列算法。
网格布局将容器划分为一个二维网格,每个组件占据一个或多个单元格,使得界面中的元素排列整齐,易于对齐。 网格布局(GridLayout)是Java Swing中的一个关键组件,属于Container类的一部分,可以通过`GridLayout...
`init`方法获取输入的总元素数量和需要选择的元素数量,然后计算可能的排列总数。`solve`方法使用回溯法生成所有可能的排列,当选择的元素达到指定数量时,将当前排列存储。`print`方法则展示所有结果。这个程序利用...
- 精度和最大迭代次数应根据实际需求进行设置,以确保结果的准确性和计算效率。 总之,这个“util”工具类为开发者提供了一种便捷的方式,用于计算非定期现金流的投资项目内部收益率,是财务分析和决策的重要辅助...
实验的结果展示了几种不同类型的Java I/O和GUI编程的实际应用,如从键盘读取输入、文件的复制、以及简单的GUI组件布局。这些实例有助于巩固理论知识,并让学生实际体验到编程解决问题的过程。 总结,这个实验报告...
在这个java程序中,我们使用回溯法来生成所有可能的排列,然后计算每个排列的总长度,并比较它们,最后找到一个最佳的排列。 在解决圆排列问题时,我们需要考虑两个圆之间的距离,这可以使用circulate函数来计算。...
这个项目不仅展示了Java编程的基础知识,还涉及到图形用户界面(GUI)的设计以及科学计算的实现。 首先,我们需要理解Java语言的核心概念。Java是一种面向对象的编程语言,它的主要特点是跨平台性、安全性以及高效...
为了在用户界面展示结果,可能还会用到Swing或JavaFX等图形库来创建窗口和按钮,让用户可以启动或停止算法,以及查看生成的排列。 此外,组合数学中的排列计数公式也值得一提。n个不同元素的全部排列数量可以用阶乘...
根据给定文件的信息,我们可以总结出以下几个关于Java日期计算的关键知识点: ### 1. 获取某个月的最大天数 为了获取某个月的最大天数,我们可以通过`Calendar`类来进行操作。首先,我们需要创建一个`Calendar`...
我们使用临时数组tempArrayLists来存储排列的结果,然后将这些结果添加到新的数组newArrayLists中。 在Java中,还有其他实现多个数组间的排列组合的方法,例如使用迭代器或Java 8的流式编程等。这些方法都可以实现...
"Java实现abc字符串排列组合" 本文将详细介绍Java实现abc字符串的排列组合,主要包括可重复排列、全排列和组合三个部分。 可重复排列 在Java中,可以使用递归来实现abc字符串的可重复排列。可重复排列是指从abc三...