组合的生成算法
2009-10-07 16:54
260 查看
本组合生成算法采用非递归生成方法,效率比较高。
参考文献:
《组合数学(第二版)》 卢开澄 卢华明 著 清华大学出版社 2002
声明:代码为本人原创 欢迎转载 另外本人利用java写的程序并不多,经验不足,代码中不足之处欢迎同行们指正!
/** * 组合的生成算法 * 实现枚举出组合C(n,r) */ package source; /** * @author lgj * @time 2009.10.03 */ public class Combination { /** * @param args[0] n * @param args[1] r */ public static void main(String[] args) { int n = Integer.parseInt(args[0]); int r = Integer.parseInt(args[1]); int[] a = new int [r+1];//without using of a[0]; int i; for(i=0;i<=r;i++) a[i]=i; for(i=1;i<=r;i++) System.out.print(a[i]+" "); System.out.println(); while(a[1]!=n-r+1) { i=r; while(a[i]==n-r+i)//从后往前找第一个小于n-r+i的位置 i--; a[i]++;//该位置值自加1 i++; while(i<=r) { a[i]=a[i-1]+1; i++; } for(i=1;i<=r;i++) System.out.print(a[i]+" "); System.out.println(); } } }
参考文献:
《组合数学(第二版)》 卢开澄 卢华明 著 清华大学出版社 2002
声明:代码为本人原创 欢迎转载 另外本人利用java写的程序并不多,经验不足,代码中不足之处欢迎同行们指正!
相关文章推荐
- 生成{1,2,...,n}的排列的算法-组合数学
- 一些常用集合算法——之组合生成
- 排列组合数生成算法
- C++之根据组合遍历顺序生成二叉树(25)---《那些奇怪的算法》
- 基础算法测试——生成一个1-10之间的随机整数组合
- 基础算法测试——生成一个1-10之间的随机整数组合
- C++之根据组合遍历顺序生成二叉树(25)---《那些奇怪的算法》
- 全排列生成算法与组合数排列求法
- 根据N种规格中的M种规格值生成的全部规格组合的一种算法
- 排列组合算法1:生成全部有序列
- 组合生成算法
- 以反射Gray码的顺序生成0,1的n元组的算法-组合数学
- 按字典序生成{1,2,...,n}的r子集的算法-组合数学
- 不定长数组取值交叉遍历组合生成算法
- 基础算法测试——生成一个1-10之间的随机整数组合
- 【算法】组合数学——排列数生成算法详解(一)
- 基础算法之排列组合生成算法
- 【算法】组合数学——排列数生成算法详解(一)
- 基于字典序的组合生成算法
- php生成数组的使用示例 php全组合算法