`
cm14k
  • 浏览: 31403 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

求组合数

阅读更多

求组合数

从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());
		
	}
}

 

 

 

 

分享到:
评论

相关推荐

    求组合数 (15 分)PTA

    练习2-18 求组合数 (15 分) 本题要求编写程序,根据公式C​n​m​​=​m!(n−m)!​​n!​​算出从n个不同元素中取出m个元素(m≤n)的组合数。 建议定义和调用函数fact(n)计算n!,其中n的类型是int,函数类型是...

    VB 用过程求组合数.rar

    VB 用过程求组合数,输入m和n,按等号键可得组合数,来看如下的简单代码:  Private Sub f(m As Integer, p As Long) '自定义通用过程,用于求阶乘  Dim i As Integer '声明局部变量  p = 1 '赋初值  For i = 1 ...

    求组合数的c代码

    求组合数的个数,以及枚举的C/C++程序代码,分享资源给需要的

    求组合数.txt

    求组合数

    杨辉三角求组合数C(n,m)一位数组解决模板

    利用C(n,m)直接求解公式时,会出现爆int或者longlong的事情,所以杨辉三角便起到作用了,一维数组,空间时间复杂度均十分优秀。

    求组合数小程序(已打包

    总结一下,"求组合数小程序(已打包"这个资源可能包含了一个修复后的C++程序,该程序实现了基于杨辉三角的组合数计算。用户可以通过下载并分析这个名为"Combination"的压缩包文件,学习如何在实际编程中计算组合数,...

    求组合数并列出所有项

    求组合数并列出所有项,输入要求的字符串

    求组合数.rar

    求组合数.rar

    VB 函数嵌套求组合数

    在VB(Visual Basic)编程语言中,组合数是一种常见的数学计算,它在各种算法和问题解决中都有应用,比如概率论、统计学以及计算机科学的某些领域。组合数表示从n个不同元素中不重复地选取k个元素的方法数量,通常用...

    求组合数.rap

    求组合数.rap

    02求组合数.rap

    02求组合数.rap

    vc 求组合数 mfc实现组合

    本文将详细讲解如何利用MFC来实现求解组合数的问题。 组合数,也称为二项式系数,是组合数学中的一个重要概念。在组合论中,给定两个非负整数n和k,它们的组合数C(n, k)表示从n个不同的元素中无序选取k个元素的方法...

    求组合数cnm的mfc实现

    在编程领域,组合数(Combination Number)是一个重要的数学概念,尤其在计算机科学中的算法设计和数据结构中占据着核心地位。组合数通常用C(n, m)表示,表示从n个不同元素中不重复地选取m个元素的方法数。在MFC...

    VB 用过程求组合数

    在VB(Visual Basic)编程语言中,组合数是一种常见的数学计算任务,特别是在处理排列组合问题时。组合数,也称为二项式系数,通常表示为C(n, k),表示从n个不同元素中不重复地选取k个元素的方法数量。在VB中实现这...

    menyf#acm-icpc-template#Lucas求组合数1

    说明:1. 数较小且mod较大时求组合数使用逆元,数较大且mod较小时求组合数用lucas2. 该模版只可以求对于正数的组合数,如果出现负数的情况则返回0使用方

    动态规划求组合数终极版

    动态规划是一种强大的算法思想,广泛应用于解决复杂计算问题,如组合数求解。组合数,又称二项式系数,表示从n个不同元素中不重复地选取m个元素的方法数,通常表示为C(n, m)或"n choose m"。在本场景中,我们探讨...

    计算组合数,用C语言编程

    根据给定的文件信息,我们可以总结出以下关于“计算组合数”的相关知识点: ### 一、组合数概念 组合数是指从n个不同元素中选取m(m≤n)个元素的方法数目,记作C(n, m)或者\( \binom{n}{m} \)。在数学中,组合数...

    python二进制求组合数,且输出每种组合

    用于二进制求组合数,比起递归更加高效,如果py文件运行不了请联系我拿TXT文件

    C++中求组合数的各种方法总结详解

    在C++编程中,求组合数是一个常见的数学计算任务,特别是在处理排列组合问题时。组合数,也称为二项式系数,表示从n个不同元素中不重复地选取r个元素的方法数,记为C(n, r)或者"n choose r"。本文将详细介绍三种在...

    C语言程序设计-编写main程序调用函数fact求解从m个元素选n个元素的组合数的个数;组合数=m!(n!.(m-n)!);

    C语言程序设计-编写main程序调用函数fact求解从m个元素选n个元素的组合数的个数;计算公式是: 组合数=m!(n!.(m-n)!);要求m不能小于n,否则应有容错处理;说明:函数fact(x)的功能是求x!;

Global site tag (gtag.js) - Google Analytics