`

[转]全排列 - 递归实现

阅读更多
public class Combination {
	public static void main(String[] args) {
		String str = "abc";
		combination(str);
	}

	public static void combination(String str) {
		char[] arr = str.toCharArray();
		comCombination(arr, 0);
	}

	private static void comCombination(char[] arr, int index) {
		if (index == arr.length - 1) {
			for (int i = 0; i < arr.length; i++) {
				System.out.printf("%c ", arr[i]);
			}
			System.out.println();
			return;
		}
		comCombination(arr, index + 1);
		for (int i = index + 1; i < arr.length; i++) {
			arr[index] ^= arr[i];
			arr[i] ^= arr[index];
			arr[index] ^= arr[i];
			comCombination(arr, index + 1);
			arr[index] ^= arr[i];
			arr[i] ^= arr[index];
			arr[index] ^= arr[i];
		}
	}
}
OUTPUT:
a b c 
a c b 
b a c 
b c a 
c b a 
c a b
分享到:
评论

相关推荐

    全排列-基于递归实现-permutation.cpp

    全排列-基于递归实现

    全排列-非递归算法

    在本例中,我们关注的是非递归算法来实现全排列,这通常使用回溯法或者迭代的方式来完成,特别是在有新元素动态加入时,需要能够快速适应并重新生成全排列。 非递归算法的优点在于它可以避免深度过大的调用栈,从而...

    去重全排列的递归实现

    去重全排列的递归实现 去掉重复数字的 全排列的 递归实现

    全排列的非递归实现JAVA

    全排列的非递归实现。 输入1,2,3,4 得到 [1 2 3 4]..........[4 3 2 1]所有24种排列

    全排列——递归排序和字典序列

    本文将详细介绍两种实现全排列的方法:递归排列和字典序排列,并通过具体的代码示例来加深理解。 #### 一、递归排列 递归排列是一种直观且易于实现的方法。其基本思路是从集合中依次选取每一个元素作为排列的第一...

    递归实现元素全排列.html

    递归实现元素全排列

    javascript-leetcode面试题解递归与回溯问题之第47题全排列-题解.zip

    本题解集中关注的是LeetCode第47题,即“全排列”问题,这是一个典型的递归与回溯算法题目。递归是函数或程序调用自身的过程,而回溯则是一种尝试所有可能解决方案并逐步撤销无效路径的方法,常用于解决组合优化问题...

    python-leetcode面试题解之第46题全排列-题解.zip

    在全排列问题中,我们可以使用递归函数来实现: 1. 选择一个元素作为当前排列的第一个元素。 2. 对于剩下的元素,递归地生成所有可能的排列。 3. 在每次递归调用中,我们都要确保当前选择的元素不与之前已选择的...

    JAVA递归实现全排列

    JAVA递归实现全排列算法,含实现源代码,如a、b、c、d的全排列为: abcd abdc acbd acdb adcb adbc bacd badc bcad bcda bdca bdac cbad cbda cabd cadb cdab cdba dbca dbac dcba dcab dacb dabc

    C语言全排列的递归算法

    全排列递归算法的核心思想是基于递归函数,它通过不断地将当前元素与剩余未排列的元素进行交换来生成所有可能的排列。下面是一个简化的C语言实现全排列的递归算法步骤: 1. **定义递归函数**:首先,我们需要定义一...

    java递归实现N个数全排列输出

    在这个场景中,我们将探讨如何使用Java语言,通过回溯法来递归实现全排列的输出。 首先,我们需要理解回溯法的基本概念。回溯法是一种试探性的解决问题的方法,它尝试逐步构建解决方案,并在每一步中检查当前的解...

    不得不说的全排列算法递归实现

    本文将详细介绍全排列算法的递归实现,以帮助读者理解全排列算法的工作原理及其在递归上的应用。 全排列问题可以简单地表述为:给定一个非空的数字集合,要求出这个集合的所有排列。例如,对于集合{1, 2, 3},它的...

    非递归对输入的数字进行全排列_C语言实现

    上传之后才发现头文件少了个ctype.h,因为判断非法输入的时候用到了isalpha(),不加这个头文件的话在gcc下会有警告,在VC下可能编译不过! 首先把输入的各个数由小到大进行排序,然后开始 1.找出比右边数字小的第一...

    数据结构实验-递归

    总结来说,"数据结构实验-递归"关注的是如何运用递归算法解决数据结构中的实际问题,如全排列和子集生成。掌握这两个概念对于理解和编写高效的计算机程序至关重要,特别是对于那些涉及大量数据操作的领域,如搜索、...

    objective-c数组全排列算法

    // 递归实现全排列 + (void)permuteArray:(NSArray *)array withCurrent:(NSMutableArray *)current toArray:(NSMutableArray *)results { if (current.count == array.count) { [results addObject:[current copy...

    N个数全排列的非递归算法

    在提供的文件名称“新建 文本文档.cpp”中,我们可以推测这是一个C++语言的源代码文件,它很可能包含了实现全排列非递归算法的代码。C++是一种强大的面向对象编程语言,非常适合处理这种需要高效计算的问题。 ...

    实验1-递归算法1

    递归实现Fibonacci数列的方法如下: ```python def fibonacci_recursive(n): if n return 0 elif n == 1: return 1 else: return fibonacci_recursive(n-1) + fibonacci_recursive(n-2) ``` 非递归实现则...

    递归练习 数据结构实验全排列

    下面是一个简单的全排列递归算法实现(用伪代码表示): ```python function permute(data, start, end): if start == end: // 基本情况:只有一个元素 print(data) else: for i in range(start, end + 1): // ...

    全排列算法-递归与字典序的实现方法(Java)

    总的来说,全排列算法的递归实现简洁直观,但可能会产生重复排列,而字典序法则能确保输出的排列是有序的且不会重复。两者各有优缺点,适用于不同的场景。在实际应用中,根据需求选择合适的方法至关重要。

    全排列算法的非递归实现与递归实现的方法(C++)

    全排列算法的非递归实现利用了序列的特性,通过调整找到下一个排列,而递归实现则利用了分治策略,将问题分解为更小的部分进行解决。两种方法各有优势,非递归实现空间效率较高,但可能涉及到较多的局部状态调整;...

Global site tag (gtag.js) - Google Analytics