求组合数
从n个数里面取m个数 (递归实现)
/**
* Description:
* 求组合数(递归法)
* 从n个数里面取m个数 算法分析:
* 用递归的方法,每选出一个数字之后就把这个数字去掉,用剩余的数字继续递归
* @author cm
*
*/
public class Combination
{
private int m;
private int[] res; //存放结果数组
private int[] arr; //被选择的数组
private int count = 0;
private int total = 0; //总数
/**
* @param m 选择的个数
* @param arr 被选择的数组
*
*/
public Combination(int m, int[] arr)
{
this.m = m;
this.arr = arr;
res = new int[m];
}
/**
* 求组合数
*/
public void combination()
{
comb(0);
}
/**
* @param start 递归调用的开始下标
*/
private void comb(int start)
{
if (count == m)
{
print();
total++;
return;
}
for (int i = start; i < arr.length; i++)
{
res[count] = arr[i];
count++;
comb(i+1); //递归调用
count--;
}
}
//打印结果
private void print()
{
for (int i = 0; i < res.length; i++)
{
System.out.print(res[i] + " ");
}
System.out.println();
}
/**
* @return 返回组合数的个数
*/
public int getTotal()
{
return total;
}
public static void main(String[] args)
{
int[] arr = {1,2,3,4,5,6,7,8,9};
//9选7
Combination comb = new Combination(7,arr);
comb.combination();
System.out.println(comb.getTotal());
}
}
分享到:
相关推荐
练习2-18 求组合数 (15 分) 本题要求编写程序,根据公式Cnm=m!(n−m)!n!算出从n个不同元素中取出m个元素(m≤n)的组合数。 建议定义和调用函数fact(n)计算n!,其中n的类型是int,函数类型是...
VB 用过程求组合数,输入m和n,按等号键可得组合数,来看如下的简单代码: Private Sub f(m As Integer, p As Long) '自定义通用过程,用于求阶乘 Dim i As Integer '声明局部变量 p = 1 '赋初值 For i = 1 ...
求组合数的个数,以及枚举的C/C++程序代码,分享资源给需要的
VB 函数嵌套求组合数 VB 函数嵌套求组合数 VB 函数嵌套求组合数
VB 用过程求组合数 VB 用过程求组合数 VB 用过程求组合数
求组合数
利用C(n,m)直接求解公式时,会出现爆int或者longlong的事情,所以杨辉三角便起到作用了,一维数组,空间时间复杂度均十分优秀。
求组合数cnm的mfc实现 菜鸟入门,学习 1,基本编辑框的设置和输入输出 2,字体的改变
利用mfc实现求组合数(vc++) 实现方法:解压后将dsw文件打开,注意是在vc中打开,运行后输入数据,即可看到运行结果
求组合数并列出所有项,输入要求的字符串
求组合数.rap
02求组合数.rap
本篇文章是对C++中的求组合数的各种方法进行了详细的介绍。需要的朋友参考下
说明:1. 数较小且mod较大时求组合数使用逆元,数较大且mod较小时求组合数用lucas2. 该模版只可以求对于正数的组合数,如果出现负数的情况则返回0使用方
用于二进制求组合数,比起递归更加高效,如果py文件运行不了请联系我拿TXT文件
使用动态规划思想求解组合数! 输入n,m;得到结果值C(n,m) 时间为:T(n*m);空间为:S(n) 基本上是最优解了!
计算组合数,利用C语言编程,是最经典的C语言事例
我博客上发表的“基于杨辉三角的组合数计算算法(C++实现)”的配套资源1 由于我的疏忽,代码敲错了些,这里再次上传
C语言程序设计-编写main程序调用函数fact求解从m个元素选n个元素的组合数的个数;计算公式是: 组合数=m!(n!.(m-n)!);要求m不能小于n,否则应有容错处理;说明:函数fact(x)的功能是求x!;
我博客上发表的“基于杨辉三角的组合数计算算法(C++实现)”的配套资源1 由于我的疏忽,代码敲错了些, 修改版请到此处下载: http://download.csdn.net/source/1707007