`
kdboy
  • 浏览: 761221 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

递归——全排列

阅读更多
全排列是对指定的组数按一定顺序进行排列。如果这组数有n个,那么全排列数为n!个。

算法:以前k个元素为前缀,对剩余元素进行全排列。

public class Perm {

	public static void main(String args[]) {
		String a[] = { "A", "B", "C", "D" };
		print(a, 0, a.length);
	}

	public static void print(String arr[], int k, int m) {
		if (k == m) {
			for (int i = 0; i < arr.length; i++)
				System.out.print(arr[i]);
			System.out.println();
		} else {
			for (int i = k; i < m; i++) {
				swap(arr, k, i);
				print(arr, k + 1, m);
				swap(arr, k, i);
			}
		}
	}

	public static void swap(String arr[], int i, int j) {
		String tmp = arr[i];
		arr[i] = arr[j];
		arr[j] = tmp;
	}
}
分享到:
评论

相关推荐

    使用swap求解不重复字符串的全排列

    为方便起见,用123来示例下。123的全排列有123、132、213、231、312、321这六种。...因此可以知道——全排列就是从第一个数字起每个数分别与它后面的数字交换。找到这个规律后,递归的代码就很容易写出来了:

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

    ### 全排列——递归排序和字典序列 在计算机科学与编程领域中,全排列是一种重要的算法,它被广泛应用于解决多种问题,如组合优化、密码学等。本文将详细介绍两种实现全排列的方法:递归排列和字典序排列,并通过...

    python——全排列数的生成方式

    Python中的全排列问题是一个经典的算法问题,涉及到排列组合与递归等概念。全排列是指从n个不同元素中取出n个元素,按照一定的顺序排成一列的所有可能情况。在这个问题中,我们需要生成从1到N的所有整数的全排列,并...

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

    本实验主题为“递归练习 数据结构实验全排列”,主要针对山东大学数据结构课程中的一个经典问题——全排列进行深入探讨。全排列是指从n个不同元素中取出m个元素,按照一定的顺序排列起来,所有可能的排列组合。在...

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

    标题 "N个数全排列的非递归算法" 涉及的是计算机科学中的经典问题——全排列。全排列是指从n个不同元素中取出m(m≤n)个元素,按照一定的顺序排成一列的所有可能组合。在这个场景中,非递归算法指的是不依赖递归...

    C语言入门-leetcode练习之第46题全排列.zip

    在本资源包"C语言入门-leetcode练习之第46题全排列.zip"中,主要涵盖了C语言的基础知识以及如何利用C语言解决算法问题的实践,特别是针对LeetCode平台上的第46题——全排列(Permutations)的解题方法。全排列问题是...

    java 中的经典递归

    #### 三、Java中经典递归示例——全排列问题 本节将通过一个具体的Java代码示例来详细介绍递归的应用,该示例实现了字符数组的全排列问题。 ```java public class AllSort { public static void main(String[] ...

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

    本题解针对LeetCode的第46题——全排列(Permutations),它属于递归与回溯算法的范畴。递归是一种函数或方法通过调用自身来解决问题的技术,而回溯则是当遇到错误或无效路径时,通过撤销最近的决策并尝试其他可能性...

    全排列递归算法的并行化.pdf

    文中提出了在两种并行计算模型——MIMD(Multiple Instruction, Multiple Data)2CREW(Contiguous Resources with Exclusive Write)模型和SIMD(Single Instruction, Multiple Data)EREW(Elementary Operation ...

    字典序、邻位对换、递归递增进位制数法、递归的递减进位制数法生成全排列

    字典序、邻位对换、递归递增进位制数法、递归的递减进位制数法生成全排列。除递归地增是O(n·n!)外,其余三个都是O(n!)。main函数是计算1——12生成全排列的运行时间。

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

    这个压缩包“python-leetcode面试题解之第46题全排列-题解.zip”显然是针对LeetCode的第46题——全排列问题的一个解决方案。全排列问题是一个经典的回溯算法应用,对于理解和掌握递归及回溯策略至关重要。 全排列...

    西南交通大学数据结构实验报告黑白棋.doxc递归算法设计及堆栈消除递归

    首先,我们来看第一个知识点——递归算法设计。实验要求实现一个黑白棋子交换的游戏,游戏的目标是通过有限步数将初始的棋盘布局(三个白子在前,三个黑子在后)转换为目标布局(三个黑子在前,三个白子在后)。游戏...

    数据结构中回溯与递归实验报告

    【描述】:本实验报告主要探讨了在数据结构和算法中回溯法和递归的应用,通过两个具体问题——棋盘覆盖问题和批处理作业调度问题,展示了这两种方法在解决实际问题中的策略和步骤。 【标签】:“word” 【实验分析...

    手稿_V1.016

    在这个问题中,递归的核心思想是从最简单的情况开始——当数组只剩下一个元素时,这个元素就是唯一的一种排列。然后,对于每个比这个长度大的数组,我们可以选择当前未使用的元素放在排列的首位,再对剩余的元素进行...

    实验1-递归算法1

    在本实验中,我们将探讨递归的实现方式,并通过两个具体的例子——Fibonacci数列和全排列问题——来加深理解。 ### Fibonacci数列 Fibonacci数列是一个典型的递归问题,它的定义是:F(0) = 0, F(1) = 1, F(n) = F...

    算法_reachy6w_算法全排列_rhythm2y6_warmis_

    "全排列"是一种常见的算法问题,它涉及到计算机科学的基础——组合数学和递归。本主题聚焦于使用C语言实现数字的全排列算法,这是一个对初学者和专业程序员都非常有价值的技能。 全排列是指从n个不同元素中取出m(m...

    计算机数据结构-全排列回溯算法-java

    在本主题中,我们将重点关注全排列问题及其解决方案——回溯算法,这是一种在计算机科学中用于搜索所有可能解决方案的有效方法,特别适用于解决约束满足问题。 全排列是指从给定集合的所有元素中,不重复地选取所有...

    生成字符串的全排列,可以用回溯法实现

    标题中的“生成字符串的全排列,可以用回溯法实现”是指在计算机科学中解决组合问题的一种常见算法——回溯法。回溯法是一种试探性的解决问题方法,它尝试逐步构建解决方案,如果在某一步发现无法得到有效解时,则...

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

    在本压缩包中,我们关注的是一个Python编程与算法相关的面试题目——LeetCode的第47题“全排列II”。这道题目属于经典的回溯法(Backtracking)问题,主要考察程序员对数组操作、组合优化以及算法设计的能力。在求职...

Global site tag (gtag.js) - Google Analytics