`
在水伊方
  • 浏览: 111570 次
  • 性别: Icon_minigender_1
  • 来自: 福州
社区版块
存档分类
最新评论

(转)求任意序列的排列组合

    博客分类:
  • Java
 
阅读更多
public class Permuter {
	// 用于记录共有多少种排列
	static int count = 0;

	public static void main(String[] args) {
		// 待排序的序列
		String str = "abc";
		// 把排序的序列转成数组
		char[] array = str.toCharArray();
		permute(array, 0, array.length - 1);
		System.out.println(str.toCharArray());
		System.out.println("count : " + count);
	}

	// 排列算法
	private static void permute(char[] charArray, int low, int high) {
		int i;

		if (high == low) {// 如果是到了第一个位置(low是第一个位置的索引),或者只有一个字符,那么应该输出此字符串
			String str = "";
			for (i = 0; i < charArray.length; i++) {
				str += charArray[i];
			}
			System.out.print(str + "  ");
			count++;
		} else {
			for (int j = low; j <= high; j++) {// 将某个位置上可能出现的字符进行遍历(如最后一个位置可能出现high+1种情况)
				for (i = low; i < high; i++) {// 将第low位置上的字符移到第high位置上
					char temp = charArray[i];
					charArray[i] = charArray[i + 1];
					charArray[i + 1] = temp;
				}
				permute(charArray, low, high - 1);// 当第high位置上的字符确定后,就应该确定第high-1位置上的字符。
			}
		}
	}
}

 

分享到:
评论

相关推荐

    数字的排列组合,可以根据需要推广到其他场面

    我得意之作,采用递归实现。排列组合。希望对大家有用。@TTgdz

    求排列组合集源码

    ### C++程序实现数字序列的排列组合子集 #### 程序背景与目标 根据提供的文件信息,该C++程序旨在实现一个简单的数字序列的排列组合子集生成器。程序的目标是接受用户输入的一组数字,并输出所有可能的子集(包括...

    C语言任意排列源代码

    - **输出结果**:最终输出总共有多少种不同的排列组合。 5. **细节解析** - **递归终止条件**:当`pos`等于`pNum`时,表明已经完成了一个排列的生成。 - **标记使用状态**:通过`used[]`数组来记录每个元素是否...

    湖北省各地市高考数学最新联考试题分类大汇编(11)排列组合 试题.doc

    排列组合是高中数学中的一个重要部分,它涉及到统计和概率理论的基础知识,对于理解和解决实际问题具有重要的作用。在高考中,排列组合问题常常出现在选择题、填空题以及解答题中,考察学生的逻辑思维和计算能力。本...

    Golang排列组合算法问题之全排列实现方法

    在Golang中实现全排列算法主要是为了解决排列组合问题,特别是在处理字符串或数组时,例如在上述例子中,需要对一组数字进行字典序排序并输出所有可能的排列。全排列算法是找出一个序列中所有可能的排列方式,且每个...

    javascript算法题:求任意一个1-9位不重复的N位数在该组合中的大小排列序号

    在这些不重复的组合中,从小到大进行排序后,能够根据输入的任意一个组合数字,计算出它在该序列中的位置(即序号)。例如,当N=3时,输入M=213,需要输出所有可能的排列组合,并且指明213在其中的序号。 算法解决...

    二年级数学下册第八单元探索乐园8.1简单的排列组合课时练冀教版

    在二年级数学下册的第八单元探索乐园中,学生会接触到一个重要的概念——简单的排列组合。这个知识点旨在培养孩子们的逻辑思维能力和问题解决能力,通过实际的数学活动,让他们理解并掌握排列和组合的基本原理。 1....

    易语言排列模块

    易语言排列模块是一种用于处理和操作数据序列的编程组件,主要目标是实现各种排序算法,以便在易语言程序中对数据进行有效管理。这个模块特别适用于处理文本数组,即一系列包含文本的数据项,通过交换元素位置来达到...

    组合数学参考答案(卢开澄第四版)60页.pdf

    以上就是组合数学中涉及的几个关键知识点,包括绝对值的应用、排列和组合计数、特殊条件下的排列数以及阶乘序列的性质。在实际应用中,这些概念广泛应用于计算机科学中的算法设计、概率统计和数据结构等领域。

    帽子问题解决方案

    #### 排列组合在帽子问题中的应用 帽子问题作为排列组合中的一个经典案例,不仅体现了概率论与组合数学的基本原理,还能够帮助我们理解复杂事件的概率计算方法。本篇文章将从帽子问题的背景出发,详细解析其背后的...

    组合数学第四版答案(前4章)

    组合数学是数学的一个重要分支,主要研究有限集合中元素的排列、组合以及各种计数问题。第四版的组合数学教材通常会包含最新的研究成果和教学经验,以更清晰、更全面的方式阐述这一领域的基本概念和方法。以下是根据...

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

    对于本题中的“输出自然数1到n的所有不重复的排列”,回溯法非常适合,因为它能够有效地生成所有可能的排列组合而不产生重复。 ### 问题描述与分析 题目要求输出自然数1到n的所有不重复排列,即n的全排列。具体来...

    组合数学课件吉林大学组合数学课件

    7. **递推关系**:描述序列中任意项与前几项之间的关系,常用于解决特定类型的组合问题。 8. ** Burnside引理**:在群论与组合学的交叉领域中,Burnside引理用于计算有限群作用下对象的等价类数。 9. **鸽巢原理的...

    高考冲刺 排列组合、二项式定理(基础)巩固练习.doc

    这些题目涉及的是高中数学中的排列组合与二项式定理的基础知识,主要考察学生的逻辑推理能力和计算技巧。让我们逐一解答: 1. 排列问题,考虑相邻限制,使用插空法,5个人排5天,第一个人有4种选择,剩下4个人形成5...

    如何用itertools解决无序排列组合的问题

    本篇文章将详细介绍如何使用itertools来解决无序排列组合的问题,并通过一个具体的实例来演示其使用方法。 首先,我们要理解无序排列组合的概念。无序排列指的是从给定的元素集合中取出指定数量的元素,不考虑元素...

    2016年高考数学(理)命题猜想与仿真押题 04 算法、推理证明、排列、组合与二项式定理(仿真押题)原卷版 缺答案.doc

    1. 题目涉及到排列组合问题,具体是不相邻问题与限制条件的处理。男生甲不站两端,任意两名女生都不相邻,可以通过插空法解决,计算出不同的排法种数。 2. 该题考察的是算法和循环结构的理解。根据程序框图的执行...

    组合数学在奥数中的应用

    数字问题可能要求计算特定条件下数字序列的排列组合;函数问题可能考察函数图像的构造与性质;方程问题则可能要求解特定类型的方程组。 ### 结语 组合数学在奥数中的应用广泛而深入,它不仅考验学生的逻辑思维能力...

    排列互比法角度偏差检定序列的可辨识性 (2013年)

    多齿分度台排列互比法的部分序列组合,检定它们的偏差的可辨识性问题,分别针对素数面棱体和合数面棱体的检定序列的选定方法进行了研究,首先研究了素数面棱体检定的序列问题,得出了素数面棱体检定的任意两个或两个...

    中科大 组合数学 期末考试 2020秋季学期

    此类题目考察的是学生对于**排列组合基础理论**的应用能力。具体来说,这类题目通常涉及如何计算特定条件下元素的排列或组合数量。教材P67例2可能是关于排列或组合的基础计算,或者是关于排列与组合的混合应用问题。...

Global site tag (gtag.js) - Google Analytics