`
yanguz123
  • 浏览: 570360 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

\(^_^)/ 全排列

    博客分类:
  • Code
 
阅读更多

参考:http://www.cnblogs.com/nokiaguy/archive/2008/05/11/1191914.html

参考:http://blog.csdn.net/morewindows/article/details/7370155/

参考:http://blog.csdn.net/e3399/article/details/7543861

参考:http://www.fengchangjian.com/?p=1063

参考:http://baike.baidu.com/view/1710135.htm?fr=aladdin

 

递归实现

package algorithm;
/**
 * 设(ri)perm(X)表示每一个全排列前加上前缀ri得到的排列.
 * 当n=1时,perm(R)=(r) 其中r是唯一的元素,这个就是出口条件.
 * 当n>1时,perm(R)由(r1)perm(R1),(r2)perm(R2),...(rn)perm(Rn)构成
 * @author yuz
 *
 */
public class PermArray {
	
	public static void main(String[] args) {
		int leng = 4;
		String[] array = new String[leng];
		for(int i=1;i<=leng;i++){
			array[i-1] = i+"";
		}
		
		perm(array,0,array.length);
	}
	
	/**
	 * @param array 要排列的数组
	 * @param start 前缀的位置
	 * @param end 要排列的数目
	 */
	public static void perm(String[] array,int start,int end){
		if(start==end-1){ //前缀是最后一个位置,此时打印排列数.
			for(int i=0;i<end;i++){
				System.out.print(array[i]);
			}
			System.out.println();
		}else{
			for(int i=start;i<end;i++){
				swap(array,start,i); //交换前缀,使之产生下一个前缀.
				perm(array,start+1,end);
				swap(array,start,i); //将前缀换回来,继续做上一个的前缀排列
			}
		}
	}
	
	public static void swap(String[] array,int i,int j){
		String temp = array[i];
		array[i] = array[j];
		array[j] = temp;
	}
	
}

 

 

 

分享到:
评论

相关推荐

    寒假40.全排列2_全排列_40_

    全排列是计算机科学中一个经典的算法问题,主要涉及到组合数学和图论的概念。在这个问题中,我们通常要找出一个给定大小的集合的所有可能的排列方式。例如,对于数字1到n,全排列就是所有可能的n个数字的排列组合。...

    qpl.rar_CC_全排列_输入全排列

    在IT领域,全排列是一个经典的算法问题,尤其在计算机科学的算法设计与分析中占有重要地位。本资源“qpl.rar”提供了一个C++源代码实现,用于解决字符的全排列问题。全排列是指从n个不同元素中取出m个元素(m≤n),...

    quanpailie.rar_C++生成全排列_c quanpailie_全排列+c++

    在编程领域,全排列是一种常见的算法问题,它涉及到对一组数据进行所有可能的无重复、有序的排列。这里我们关注的是使用C++语言来实现全排列的算法。C++是面向对象的编程语言,它的效率高,功能强大,非常适合解决这...

    FullPermutation_java_算法_全排列_

    全排列是计算机科学中一种常见的算法问题,主要应用于数据处理、搜索优化以及组合数学等领域。在Java编程中,实现全排列通常涉及到递归或回溯等技术。本篇将详细介绍两种常用的Java方法来解决全排列问题,并探讨相关...

    quanpailie.rar_C++quanpailie_quanpailiec++_一组数全排列_全排列

    全排列是计算机科学中一种常见的算法问题,特别是在组合数学和编程中。在C++中实现全排列算法,主要是为了找出给定数组或集合的所有可能排列组合。本篇将深入探讨全排列的概念、C++实现方法以及相关的编程技巧。 ...

    算法_reachy6w_算法全排列_rhythm2y6_warmis_

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

    QuanPaiLie.rar_全排列

    全排列是计算机科学中一种常见的算法问题,尤其在组合数学和程序设计竞赛中频繁出现。全排列是指从给定的n个不同元素中取出m个元素(通常m等于n),按照一定的顺序排列起来,所有可能的排列组合就构成了全排列。在本...

    c_n_array.rar_全排列

    全排列是计算机科学中一个重要的算法问题,尤其是在组合数学和编程领域。在给定的标题“c_n_array.rar_全排列”中,我们可以推断这是一个关于C语言实现N个元素全排列的程序代码包。全排列是指从n个不同元素中,按照...

    QuanPaiLie.rar_K._perm(list_x_M)_全排列

    全排列是一种经典的算法问题,它涉及到计算机科学中的组合数学和递归编程。在这个"QuanPaiLie.rar_K._perm(list_x_M)_全排列"压缩包中,包含了一个使用C++(VC)编写的程序,用于实现全排列的递归算法。我们将详细...

    qpl.zip_independent45w_全排列

    全排列是一种经典的算法问题,它涉及到计算机科学中的组合数学和算法设计。在给定的标题“qpl.zip_independent45w_全排列”中,我们可以推断这是一个关于全排列的程序实现,可能是用于解决10以内的数字全排列问题,...

    qpl.rar_全排列

    全排列是一种经典的算法问题,它指的是从n个不同的元素中取出m个元素,按照一定的顺序排列,其中m≤n。在本例中,"qpl.rar_全排列"的标题表明这是一个关于全排列算法的C语言程序。我们将深入探讨全排列的概念、C语言...

    qiongjufa.rar_全排列

    全排列是一种经典的算法问题,它涉及到计算机科学中的组合数学和递归编程。在这个"qiongjufa.rar_全排列"的压缩包中,我们可以推测包含的是一个使用穷举法来实现全排列的示例,可能是以文档形式(qiongjufa.doc)...

    C/C++全排列

    全排列是组合数学中的一个重要概念,它涉及到计算机科学中算法设计和分析的范畴,尤其是在解决排列组合问题时。在C/C++编程语言中,实现全排列通常需要借助递归或回溯法。以下是对全排列及其C/C++实现的详细解释。 ...

    quanpailie.rar_全排列

    全排列是一种经典的算法问题,广泛存在于计算机科学和编程学习中。它是指从n个不同元素中取出n个元素,按照一定的顺序进行排列,且每个元素只能出现一次。在这个压缩包"quanpailie.rar"中,我们可以期待找到一个简单...

    生成全排列矩阵_matlab

    资源名:生成全排列矩阵_matlab 资源类型:matlab项目全套源码 源码说明: 全部项目源码都是经过测试校正后百分百成功运行的,如果您下载后不能运行可联系我进行指导或者更换。 适合人群:新手及有一定经验的开发...

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

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

    Java_字符串全排列大全_(已解决重复问题)

    Java写的源码,解决各种字符串全排列问题,已解决重复问题,经过上机调试可直接运行

    luojiyunsuan.rar_全排列

    知识要点:理解熟悉单片机的逻辑运算 运行结果:P1 口输出4 次计算的数值,注意1 为灭0 为亮,从1.7 到1.0 排列 与的概念:有0 为0 全1 出1.或的概念:有1 为1 全0出0.取反的概念遇1 为0 遇0 为1 ...

    全排列代码,C语言代码,用来解决全排列问题

    全排列代码,C语言代码,用来解决全排列问题,csc 认证

Global site tag (gtag.js) - Google Analytics