今天同学问我一个问题,计算出来双色球33选6个红球排列组合所有的组合,要求最小化算法时间。

1,23,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33

排列组合后总共有1107568中情况(1107568 = 33!/(33-6)!*6!)

下面java代码为计算所有情况算法,去掉IO后,耗时15ms。

其中算法核心为:最小组合(1,2,3,4,5,6) , 最大组合(28,29,30,31,32,33), 每一组组合规律为 (A<B<C<D<E<F) 。

package c;import java.io.FileNotFoundException;/*** 排列组合* @author 咋个办呢*/
public class PermutationsCombinations {/*** 递归算法核心* @param pce* @param w* @param m*/private static void calpce(int[] pce , int w , int m){if(pce[w]+1>(m-pce.length+w+1)){if(w>0){calpce(pce, w-1, m) ;pce[w] = pce[w-1]+1 ;}else{pce[w] = pce[w]+1 ;}}else{pce[w] = pce[w]+1 ;}}private static int sumCount(int m , int n){int a=1 ,c=1 ;for(int _m=m ; _m>(m-n) ; _m-- ){a = a * _m ;}for(int _n=n ; _n>0 ; _n--){c = c*_n ;}return a/c ;}public static void main(String[] args) throws FileNotFoundException {int[] pces = new int[33] ;for(int i=0 ; i<pces.length ; i++){pces[i] = i + 1 ;if(i%11==0){System.out.println();}System.out.print(pces[i]+",");}System.out.println();int sumc = sumCount(33, 6) ;System.out.println("排列组合后共有"+sumc+"个组合。");int[] pce = new int[]{1,2,3,4,5,6} ;int count = 0 ;long t1 = System.currentTimeMillis() ;while(count<=sumc){count++ ;
//          System.out.println(String.format("[%d,%d,%d,%d,%d,%d]",pce[0],pce[1],pce[2],pce[3],pce[4],pce[5]));calpce(pce, 6-1, 33);}long t2 = System.currentTimeMillis() ;System.out.println("耗时:"+(t2-t1)+"ms,计数总数:"+(count-1));}}

双色球33选6红球 排列组合算法 C(33,6) - 咋个办呢相关推荐

  1. js实现排列组合算法N选M

    JavaScript 从一个数组中拿出N个数(可放回),问共有多少种 今天在写一道leetcode的时候遇到了无重复放回的遍历问题,用递归解决如下: function p(arr, N, ans){i ...

  2. JavaScript实现双色球机选逻辑错误与正确的算法

    JavaScript实现双色球机选逻辑的错误与正确算法 看了下新闻,看到某某幸运儿机选中了巨额双色球的新闻,忽然对JavaScript机选程序的实现产生了兴趣,刚开始的想法是写个随机产生1-33之间的 ...

  3. php 组合算法,PHP简单排列组合算法示例分享

    本文主要和大家介绍了PHP实现的简单排列组合算法,结合具体应用实例分析了排列组合算法的实现与使用技巧,需要的朋友可以参考下,希望能帮助到大家. 一.问题: 给你一个40斤的西瓜,给3个人分,有多少种分 ...

  4. python 排列组合速度_Python实现的简单排列组合算法示例

    本文实例讲述了Python实现的简单排列组合算法.分享给大家供大家参考,具体如下: 1.python语言简单.方便,其内部可以快速实现排列组合算法,下面做简单介绍 2.一个列表数据任意组合 主要是利用 ...

  5. 排列组合算法之二: 01转换法_java改变后的c++改进版

    http://blog.csdn.net/canguanxihu/article/details/46363375 排列组合算法之一: 01转换法_java改变后的c++版 class ZuheAss ...

  6. 排列 组合 算法(一)

    排列组合算法 我们都知道排列与组合的个数可以利用公式很容易的求出来,但是要是把这些排列组合的序列一一输出怎么办呢? 下面结合<组合数学>(第四版)卢开澄卢华明编著,好好总结排列与组合的算法 ...

  7. python写排列组合_Python实现的简单排列组合算法示例

    本文实例讲述了Python实现的简单排列组合算法.分享给大家供大家参考,具体如下: 1.python语言简单.方便,其内部可以快速实现排列组合算法,下面做简单介绍 2.一个列表数据任意组合 主要是利用 ...

  8. java 获取排列组合_Java获得一个数组的指定长度排列组合算法示例

    本文实例讲述了Java获得一个数组的指定长度排列组合算法.分享给大家供大家参考,具体如下: package demo; import java.util.Stack; /** * JAVA获得一个数组 ...

  9. js排列组合算法解决方案

    之前文章中谈过排列组合算法,主要事递归,代码如下 const arrangeCombination = arr => {const res = [], len = arr.length, inn ...

最新文章

  1. ArcSDE、ArcGis Engine、ArcGis Desktop的授权配置
  2. SAP HANA能否推动实时应用?
  3. java string 异或_Java源码——String
  4. PHP使用单例模式进行连接DB:public的方法进行调用连接函数即可
  5. 语言之输出png图片_什么是PPML?如何输出PPML文档?
  6. wsl Java开发_WSL2开发环境搭建
  7. boost 学习笔记
  8. [转载]jquery ajax/post/get 传参数给 mvc的action
  9. 帆软扩展后排序(超链排序)
  10. 造福身心障碍者 Skype及PowerPoint新增实时字幕功能
  11. 海思HI3536 H265解码处理器简介
  12. flask文件上传 flask-uploads
  13. 13号线ab线规划图_北京地铁13号线拆分成这样了(附图)
  14. JavaWeb笔记02(数据库)
  15. u盘工作表在计算机上打不开,U盘中无法打开的excel的解决办法
  16. python powerbi知乎_数据分析-PowerBI
  17. CKEditor 4.x 批量图片上传插件
  18. 干货!5招搞定问卷调查差异化分析
  19. 使用 Hexo 快速免费搭建个人网站
  20. PATCHY-SAN - Learning Convolutional Neural Networks for Graphs ICML

热门文章

  1. KMP--君住长江头,我住长江尾,日日思君不见君,共饮长江水
  2. 在虚拟机种测试邮件服务器,从虚拟机到邮件服务器.doc
  3. Hystrix服务降级fallback
  4. java ftp返回到根目录,Linux下搭建ftp服务,更改根目录到大存储到位置
  5. Geant4 不完全学习指南4(用户借口类intercoms 简单归纳)
  6. CSS放置显示a标签的下划线
  7. python计算身份证校验位
  8. trap water_25 Water Effect Photoshop教程和画笔
  9. 《代码整洁之道》(12)迭进
  10. 【LOL DOTA】面向对象详解