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

子集的全排列

阅读更多
比如 123
1
2
3
12
21
13
31
23
32
123
132
213
231
312
321
public class SubPerm {
	public static void main(String[] args) {

		int[] a = { 1, 2, 3, 4 };
		System.out.println(perm(a, 0));
	}

	public static int perm(int[] a, int begin) {
		int count=0;		
		for (int i = 0; i < begin; i++) {
			System.out.print(a[i] + " ");			
		}
		if(begin>0){
			count=1;
			System.out.println();
		}
		if (begin == a.length) {
			return 1;
		}

		for (int i = begin; i < a.length; i++) {
			swap(a, begin, i);
			count += perm(a, begin + 1);
			swap(a, begin, i);
		}
		return count;
	}

	public static void swap(int[] a, int begin, int end) {
		int temp = a[begin];
		a[begin] = a[end];
		a[end] = temp;
	}
}

分享到:
评论

相关推荐

    基于集合的子集与集合的全排列的相关问题

    总结起来,集合的子集与全排列是理解基本的组合数学和算法设计的关键概念。通过非递归和递归方法,我们可以有效地枚举和生成这些组合。在实际编程中,这些技巧常用于解决各种问题,如搜索、优化和测试用例生成等。

    回溯法 - 输出自然数1到n所有不重复的排列,即n的全排列

    根据给定文件的信息,本文将深入探讨如何使用回溯法来输出自然数1到n的所有不重复排列(即n的全排列)。同时,还将提供一个Java实现的具体示例。 ### 回溯法简介 回溯法是一种通过尝试解决离散和组合问题的方法,...

    Python基于回溯法子集树模板解决全排列问题示例

    本文实例讲述了Python基于回溯法子集树模板解决全排列问题。分享给大家供大家参考,具体如下: 问题 实现 ‘a’, ‘b’, ‘c’, ‘d’ 四个元素的全排列。...'''用子集树实现全排列''' n = 4 a = ['a','b','c','

    Python实现全排列的打印

    递归是一种常用的编程技巧,它允许函数调用自身来解决问题的一个子集。对于全排列问题,我们可以递归地将问题分解为更小的子问题,即固定列表中的一个元素,然后递归地对剩余元素进行排列。 下面是一个Python代码...

    201700140056_李港_试验零1

    实验给出了全排列和子集的测试输入和输出,例如,输入3个数字3, 1, 2,全排列的输出包括了所有可能的排列组合,如1 2 3, 1 3 2, 2 1 3等。而对于子集的测试,输入同样为3, 1, 2,输出则包含了所有可能的子集,包括...

    201700140056_李港_实验一1

    在这个实验报告中,李港同学主要探讨了两个与数据结构和算法相关的问题:全排列和输出所有子集,这两个问题都是通过递归方法解决的。以下是详细的解释: **全排列**: 全排列是指从n个不同元素中取出m个元素,按照...

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

    全排列算法是计算机科学中的一种经典算法,用于生成一个给定元素集合的所有可能排列组合。在C++中,我们可以使用非递归和递归两种方法实现全排列算法。 ### 非递归全排列算法 非递归实现的核心思想是通过不断调整...

    python回溯法实现数组全排列输出实例分析

    回溯算法是一种通过递归方式探索所有可能的算法,特别适用于实现诸如全排列、子集等组合问题。全排列是指从给定的数组中找出所有可能的排列方式。在算法中,这通常意味着通过交换数组中的元素来得到不同的排序结果。...

    (实验一)1

    在这个实验中,有两个主要任务:输出一个数组的全排列和所有子集。 首先,我们来看第一个任务,生成n个元素的全排列。全排列是指从n个不同的元素中,每次取出其中的n个,按照一定的顺序排成一列,所有可能的排列...

    全排列算法的原理和实现代码

    全排列的基本思想是通过递归地处理问题的子集。假设我们有一组数字{1, 2, 3, ..., n},全排列就是找到所有可能的序列,使得每个数字在每个位置上都出现过一次。如果n=1,全排列就只有自己,即{1}。对于更大的n,我们...

    201700130009_张愈博_实验一1

    这篇实验报告主要讨论了两个与数据结构和算法相关的问题,涉及递归在全排列和子集生成中的应用。实验由山东大学计算机科学与技术学院的学生张愈博完成,旨在通过实践加深对递归算法的理解,并熟练使用开发工具。 ...

    数据结构实验-递归

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

    数据库求属性集闭包&函数依赖闭包

    声明:以下仅个人观点,若有错误,敬请指正O(∩_∩)O~ ...求R的所有子集(要用到第二步中的全排列~~~),设其中一个为Ri;对每一个子集求其闭包,记为Ri+;然后求Ri+的所有子集记为(Ri+)j;最后做映射Rià(Ri+)j。

    labuladong的刷题笔记V1.31

    5. **全排列**:对于一个给定的数组,全排列问题是找出所有可能的元素排列方式。回溯算法可以有效地生成所有排列。 6. **组合**:不同于全排列,组合问题不要求考虑元素的顺序,只是从给定集合中选择一定数量的元素...

    前端大厂最新面试题-backtracking.docx

    III、组合总和 III、第k个排列、优美的排列、翻转游戏 II、N皇后 II、子集 II、全排列 II、黄金矿工、组合总和 II、将数组拆分成斐波那契序列、活字印刷、计算各个位数不同的数字个数、二进制手表、格雷编码、串联...

    2007集合与图论第2次课堂练习解答1

    " 表示的是7个元素的全排列减去5个元素的全排列两次加上3个元素的全排列。全排列的计算使用排列公式 P(n, k) = n!/(n-k)!。 - 这里计算得 4806(7! - 5! - 5! + 3! = 5040 - 120 - 120 + 6 = 4806)。 3. **集合与...

    算法竞赛入门经典授课教案第7章_暴力求解法.doc

    递归生成全排列时,可以利用回溯法避免重复,有效地生成所有可能的排列组合。 **7.3 子集生成**: 子集生成包括增量法、位向量法和二进制法。增量法从空集开始,每次增加一个元素;位向量法利用二进制表示集合成员...

    树形结构的3中搜索方式示例分享

    本篇文章将详细探讨三种常见的树形结构搜索方式:二叉树搜索、满m叉树搜索以及子集树(全排列树)搜索。 1. **二叉树搜索**: 二叉树是最基础的树形结构,每个节点最多有两个子节点,通常分为左子节点和右子节点。...

    201700130033_武学伟_实验一1

    本实验报告讲解了递归算法在数据结构中的应用,具体来说是递归算法在生成全排列和子集问题中的应用。通过实验,我们熟悉了开发工具的使用,掌握了递归的实现思想,并了解了递归算法在解决实际问题中的重要性。 一、...

Global site tag (gtag.js) - Google Analytics