利用递计算所有数组组合的算法求教
这个算法的意思大概如下,将1,2,3,4,5...n的数字进行组合,他使用了一种表现分组的形式,以防止分组的重复,在分组内数字减小,在不同分组之间的第一个数字呈现增大。如{1,3,2,4,5}则实际分组为1,23,4,5,而{1,4,2,3,5}这种形式是不符合规定的(在不同分组之间的第一个数字呈现增大),若要表示该分组应表示为{1,3,4,2,5}
代码如下
无论我输入的数组是什么,输出的组合永远都是1,2,3...i的组合,这段代码完全看不懂,求解释,希望给点注释和点播
代码如下
import java.util.Arrays;
public class a{
public static void main(String[] args){
genSetPart(new int[]{3,67,3,6,4},5);
}
static void genSetPart(int a[], int i) {
if ( i > 0 ) {
int j, head = i;
for ( j = i; j < a.length; ++j ) {
if ( head < a[j] ) {
a[j-1] = i;
genSetPart(a, i-1);
head = a[j];
}
a[j-1] = a[j];
}
a[j-1] = i;
genSetPart(a, i-1);
for ( j = a.length-1; j >= i; --j ) a[j] = a[j-1];
} else
System.out.println(Arrays.toString(a));
}}无论我输入的数组是什么,输出的组合永远都是1,2,3...i的组合,这段代码完全看不懂,求解释,希望给点注释和点播
...全文
相关推荐
C++基本算法思想之递推算法思想
"C++基本算法思想之递推算法思想,主要介绍了递推算法的基本思想、执行过程,并通过斐波那契数列的例子详细解释了递推算法的应用。"递推算法是解决数学和计算机科学问题时常用的一种策略,它依赖于已知的数
C语言利用Levinson递推演算法求解n阶Toeplitz型的联立方程式.txt
### C语言利用Levinson递推演算法求解n阶Toeplitz型的联立方程式#### Toeplitz矩阵与Levinson递推算法简介本篇文章将介绍如何使用C语言实现Levinson递推算法来求解
java从n个数组中取出所有的组合
在Java编程中,"从n个数组中取出所有的组合"是一个经典的算法问题,涉及到排列组合的概念。这通常可以通过回溯法或递归策略来解决。下面我们将深入探讨这个主题。
Java获得一个数组的指定长度排列组合算法示例
Java获得一个数组的指定长度排列组合算法示例 Java获得一个数组的指定长度排列组合算法示例是 Java 编程中一个常见的算法问题,旨在解决获得一个数组的指定长度排列组合问题。
从n个数组中取出所有排列组合(Java实现)
此外,对于大数据量的输入,还需要考虑性能优化,如使用并行计算或记忆化搜索等技术。总结来说,从n个数组中取出所有排列组合的Java实现涉及到递归算法、回溯法以及数据结构的操作。


Java SE
