针对较大基数的排列组合算法Java实现类(n选m)
package com.utils; import java.math.BigDecimal;
import java.math.RoundingMode; public class PLZUUtils { public static BigDecimal computePaiLie(int n, int m) {
if(m > n || n < 0 || m < 0) {
throw new IllegalArgumentException("n必须大于m!");
}
return computerJC(n).divide(computerJC(n - m), 1, RoundingMode.HALF_UP);
} public static BigDecimal computeZuhe(int n, int m) {
if(m > n || n < 0 || m < 0) {
throw new IllegalArgumentException("n必须大于m!");
}
//=n!/m!(n-m)! return computerJC(n).divide((computerJC(m).multiply(computerJC(n - m)).setScale(1, RoundingMode.HALF_UP)), 1, RoundingMode.HALF_UP);
} public static BigDecimal computerJC(int n) {
if(n < 0) {
throw new IllegalArgumentException("n不能为负数!");
} else if(n == 0) {
return new BigDecimal(1);
}
BigDecimal bd = new BigDecimal(1.0);
for(int i=n; i>=1; i--) {
bd = bd.multiply(new BigDecimal(i)).setScale(1, RoundingMode.HALF_UP);
}
return bd;
} public static void main(String[] args) {
BigDecimal zh = computeZuhe(462, 442);
System.out.println(zh.doubleValue());
} }
针对较大基数的排列组合算法Java实现类(n选m)的更多相关文章
- 排列组合算法(PHP)
用php实现的排列组合算法.使用递归算法,效率低,胜在简单易懂.可对付元素不多的情况. //从$input数组中取$m个数的组合算法 function comb($input, $m) { if($m ...
- C#语法灵活运用之排列组合算法
今天群里有朋友求一个排列组合算法,题目是给定长度,输出所有指定字母的组合. 如指定字母a.b.c.d.e.f,长度为2,则结果应为:aa.ab.ac ... ef.ff. 有朋友给出算法,很有特色: ...
- python实现高效率的排列组合算法-乾颐堂
组合算法 本程序的思路是开一个数组,其下标表示1到m个数,数组元素的值为1表示其下标 代表的数被选中,为0则没选中. 首先初始化,将数组前n个元素置1,表示第一个组合为前n个数. 然后从左到右扫描数组 ...
- 排列组合算法的Java实现
转载于:http://cgs1999.iteye.com/blog/2327664
- 代码实现排列组合【Java】
一.代码实现 package zhen; import java.util.Arrays; public class Arrangement { /** * 计算阶乘数,即n! = n * (n-1) ...
- 排列组合算法的javascript实现
命题:从成员数为N的集合S中,选出M个元素,分别求其排列与组合结果集,即 A(N, M)与C(N, M) js解法: function queue(arr, size){ if(size > a ...
- 排列组合算法(基于c++实现)
排列 全排列是将一组数按一定顺序进行排列,如果这组数有n个,那么全排列数为n!个.现以{1, 2, 3}为例说明如何编写全排列的递归算法 第一层S1表示第一个数分别与第1.2.3个数交换位置,如123 ...
- c语言中一种典型的排列组合算法
c语言中的全排列算法和组合数算法在实际问题中应用非常之广,但算法有许许多多,而我个人认为方法不必记太多,最好只记熟一种即可,一招鲜亦可吃遍天 全排列: #include<stdio.h> ...
- C(n,m)排列组合算法
主要解决C(n,m)问题 static class Extension { public static IList<IList<T>> GetGroup<T>(th ...
随机推荐
- NDK学习二: NDK目录结构
NDK目录结构 NDK下载好之后目录结构如下: 目录名 描述 build 存放和编译相关的脚本文件,最外面的ndk-build就是调用该目录下的makefile文件,其中mak ...
- Objective C 快速入门学习一
Objective-C程序设计 1. 直接用Xcode作为IDE,舍弃gcc编译方面的学习.2. 入门例子:Eg:打印Hello World 控制台程序 #import<Foundation/F ...
- discuz内置常用CSS代码分析
CSS多IE下兼容HACK写法 所有 IE浏览器适用:.ie_all .foo { ... } IE6 专用:.ie6 .foo { ... } IE7 专用:.ie7 .foo { ... } IE ...
- CSS3 text-overflow 属性
1. <!DOCTYPE html> <html> <head> <style> div.test { white-space:nowrap; widt ...
- jquery.cookie中的操作
http://w3school.com.cn/js/js_cookies.asp jquery.cookie中的操作: jquery.cookie.js是一个基于jquery的插件,点击下载! 创建一 ...
- AngularJs之ng-repeat的用法
可参考文章:http://blog.csdn.net/renfufei/article/details/43061877 ng-repeat信息展示的核心: [1]异步读取数据源 works,见代码一 ...
- oracle数据库高级应用之《自动生成指定表的insert,update,delete语句》
/* * 多条记录连接成一条 * tableName 表名 * type 类型:可以是insert/update/select之一 */ create or replace function my_c ...
- POJ 2352
---恢复内容开始--- http://poj.org/problem?id=2352 这是一个树状数组的题目,也是我第一次接触这类的题目,也正是因为之前的一道题,TLE了,超时太严重了,我看disc ...
- MMO可见格子算法
看注释吧,写的很清楚了 using System; using System.Collections.Generic; using System.Diagnostics; using System.L ...
- UIScrollView 的 delaysContentTouches
UIScrollView 的一段说明: Because a scroll view has no scroll bars, it must know whether a touch signals a ...