终于有个高效率的排列组合算法

原创 2006年05月28日 21:54:00

1。最近一直在考虑从m个数里面取n个数的算法。最容易理解的就是递归,但是其效率,实在不能使用。一直找寻中,今日得果

2。算法来源与互联网

组合算法  
  本程序的思路是开一个数组,其下标表示1到m个数,数组元素的值为1表示其下标  
  代表的数被选中,为0则没选中。    
  首先初始化,将数组前n个元素置1,表示第一个组合为前n个数。    
  然后从左到右扫描数组元素值的“10”组合,找到第一个“10”组合后将其变为  
  “01”组合,同时将其左边的所有“1”全部移动到数组的最左端。    
  当第一个“1”移动到数组的m-n的位置,即n个“1”全部移动到最右端时,就得  
  到了最后一个组合。    
  例如求5中选3的组合:    
  1   1   1   0   0   //1,2,3    
  1   1   0   1   0   //1,2,4    
  1   0   1   1   0   //1,3,4    
  0   1   1   1   0   //2,3,4    
  1   1   0   0   1   //1,2,5    
  1   0   1   0   1   //1,3,5    
  0   1   1   0   1   //2,3,5    
  1   0   0   1   1   //1,4,5    
  0   1   0   1   1   //2,4,5    
  0   0   1   1   1   //3,4,5  

全排列算法  
   
  从1到N,输出全排列,共N!条。  
  分析:用N进制的方法吧。设一个N个单元的数组,对第一个单元做加一操作,满N进  
  一。每加一次一就判断一下各位数组单元有无重复,有则再转回去做加一操作,没  
  有则说明得到了一个排列方案。

相关文章推荐

数组的全排列算法

求给定数组的全排列。 如: 输入: 1,2,3 输出: 1 2 3  1 3 2  2 1 3  2 3 1  3 2 1  3 1 2  思路:这里借用别人的解题思路,...

N个数组中所有元素的排列组合(笛卡尔积)算法

(1)N个数组对象中所有元素排列组合算法

排列组合算法

排列组合算法 1。最近一直在考虑从m个数里面取n个数的算法。最容易理解的就是递归,但是其效率,实在不能使用。一直找寻中,今日得果2。算法来源与互联网组合算法     本程序的思路是开一个数组,其下...

排列组合算法总结(含Java实现)

一. 排列组合1. 排列(1)排列:(2)全排列:2. 组合:从n个元素中选择m个元素(不考虑顺序)...

高效率的排列组合算法(java实现)

 package BeanUtil;import java.util.ArrayList;import java.util.List;import com.work.core.exception.Ou...
  • wmj2003
  • wmj2003
  • 2009年01月01日 16:40
  • 23401

高效全组合算法实现

昨天晚上,一个在当当实现的同学回来,说遇到了一个算法没看明白,仔细一看,还挺有意思,现在给大家分享一下。 算法说明:当n大于2时,n个数的全组合一共有(2^n)-1种。 当对n个元素进行全组合的时...

C# 计算排列组合数,及列出所有组合形式的算法

前段时间有同学问到,如何编程求排列组合数,以及列出所有排列组合形式的算法。乘着放假,写了一种实现的方法!怕时间长了,淹没在硬盘里,记录在此! /// /// 计算Int...

Delphi7高级应用开发随书源码

  • 2003年04月30日 00:00
  • 676KB
  • 下载

快速组合排列算法

 --- 如何从一个整数数列中,快速的查找出一个子集合,使得这个子集的整数和等于一个给定的目标数值? 解决这个问题的算法核心是:快速遍历整数集合的子集合。 考虑到与一般实际问题的有效结合,...
  • Suprman
  • Suprman
  • 2015年10月27日 11:57
  • 1874

c#全排列 和 组合算法

参考:http://topic.csdn.net/u/20090220/23/e2d130d9-d7d4-4520-bec7-e78ae6ca9aff.htmlhttp://topic.csdn.ne...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:终于有个高效率的排列组合算法
举报原因:
原因补充:

(最多只允许输入30个字)