针对较大基数的排列组合算法Java实现类(n选m)
2014-06-23 12:01
886 查看
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实现排列组合算法
- java排列组合算法代码实现
- java排列组合算法代码实现
- 【转】JAVA实现排列组合算法
- 排列组合算法总结(含Java实现)
- java 高效率的排列组合算法(java实现)
- 排列组合算法 的java实现
- 高效率的排列组合算法(java实现)
- 排列组合算法总结(含Java实现)
- java 高效率的排列组合算法(java实现)
- 高效率的排列组合算法(java实现)
- 排列和组合算法 C语言经典实现
- 排列与组合的算法实现
- 排列和组合算法 C语言经典实现
- Java实现基于数值编码原理的组合算法(单线程)
- 全排列和组合的实现算法
- 排列组合算法的递归实现
- 简述Java程序语言通用组合算法的实现
- Java实现基于数值编码原理的组合算法(多线程)
- 对sql查询语句组合查询的通用实现算法(c++版,java版)