java求排列组合数
来源:互联网 发布:网络教研三剑客 编辑:程序博客网 时间:2024/05/19 16:48
1.排列数公式:
A(n,m)=n(n-1)(n-2)……(n-m+1)= n!/(n-m)!
2.组合数互补性质:如下图所示
即从m个不同元素中取出n个元素的组合数=从m个不同元素中取出(m-n)个元素的组合数;
运用互补性质可以简化组合数的计算量。
package com.lan.MathFunction;//求排列数组合数public class Test{//求排列数public static int A(int up,int bellow){int result=1;for(int i=up;i>0;i--){result*=bellow;bellow--;}return result;}//求组合数,这个也不需要了。定义式,不使用互补率public static int C2(int up,int below){//int denominator=factorial(up);//分母up的阶乘//分母int denominator=A(up,up);//A(6,6)就是求6*5*4*3*2*1,也就是求6的阶乘//分子int numerator=A(up,below);//分子的排列数return numerator/denominator;}public static int C(int up,int below)//应用组合数的互补率简化计算量{int helf=below/2;if(up>helf){System.out.print(up+"---->");up=below-up;System.out.print(up+"\n");}int denominator=A(up,up);//A(6,6)就是求6*5*4*3*2*1,也就是求6的阶乘//分子int numerator=A(up,below);//分子的排列数return numerator/denominator;}public static void main(String[] args){for(int i=1;i<=6;i++){System.out.println("A("+i+",6)="+A(i,6));}for(int i=1;i<=6;i++){System.out.println("C("+i+",6)="+C(i,6));}//int m=15/2;//int型会向前取整//System.out.println("m="+m);//m=7//for(int i=10;i<=20;i++)//{//m=i/2;//System.out.println("i="+i+",m="+m);//}System.out.println("C(5,6)="+C(5,6));//6}}结果:
A(1,6)=6A(2,6)=30A(3,6)=120A(4,6)=360A(5,6)=720A(6,6)=720C(1,6)=6C(2,6)=15C(3,6)=204---->2C(4,6)=155---->1C(5,6)=66---->0C(6,6)=15---->1C(5,6)=6
阅读全文
0 0
- java求排列组合数
- C#求排列组合数
- 排列组合(求排列数)
- 排列组合(求排列数)
- zoj 3725 dp求排列组合数
- 求排列组合数C(n,r)
- 求数组的所有排列组合数
- 求几个数的全排列组合
- 求排列组合
- iOS 借助排列组合求赛事投注的注数问题。
- java 求最大数
- C#递归求排列组合
- 求排列组合算法
- java排列组合
- java排列组合
- java 排列组合
- 任意数的排列组合
- 排列组合数生成算法
- 【Spring】Spring开启注解配置
- 关于Dalston.SR3版本的spring cloud,用feign客户端调用服务hystrix不能生效的问题
- oracle体系结构-一条sql说明oracle体系结构
- WXML节点信息API
- 字符串的查找删除
- java求排列组合数
- MySQL explain执行计划参数说明
- jsonp跨域百度
- Docker源码分析(五):Docker Server的创建
- 【安全牛学习笔记】 本地提权
- 二叉排序树的构造、深度优先遍历、广度优先遍历
- 2017.9.15
- 范围管理:用WBS工作分解法划定项目范围
- 36. Valid Sudoku