原理:以Cni(8,3)为例,按定义式将其展开为(8*7*6*5*4*3*2*1)/(3*2*1)/(5*4*3*2*1),对于8到6之间的数,分子上出现一次而分母上没出现;5到3之间的数分子、分母上各出现一次;3到1之间的数分子上出现一次而分母上出现两次。
优势:避免了求阶乘的计算,同时也避免了n太大而导致无法使用长整型变量来表示其阶乘(大多数编程语言中都存在这个问题,当然了Python不存在这个问题)。
补充:关键在于算法,可以使用任意其他语言改写程序,但当组合数结果超出了其他语言中长整型变量的表示范围时同样无法使用,使用Python不存在这个问题。
def Cni(n,i):

if not (isinstance(n,int) and isinstance(i,int) and n>=i):

print 'n and i must be integers and n must be larger than or equal to i.'

return

result = 1

Min, Max = min(i,n-i), max(i,n-i)

for i in range(n,0,-1):

if i>Max:

result *= i

elif i<=Min:

result /= i

return result

print Cni(6,2)

最快的组合数算法之Python实现相关推荐

  1. 机器学习算法与Python实践之(二)支持向量机

    http://blog.csdn.net/zouxy09/article/details/17291543 机器学习算法与Python实践这个系列主要是参考<机器学习实战>这本书.因为自己 ...

  2. 机器学习算法与Python实践之(四)支持向量机(SVM)实现

    机器学习算法与Python实践之(四)支持向量机(SVM)实现 zouxy09@qq.com http://blog.csdn.net/zouxy09 机器学习算法与Python实践这个系列主要是参考 ...

  3. 归并排序验证性实验_攻略 | 10 大经典排序算法(Python 版)

    全国信息学大神和家长在这里 排序算法是<数据结构与算法>中最基本的算法之一. 排序算法可以分为内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能 ...

  4. 机器学习算法与Python实践之(二)k近邻(KNN)

      机器学习算法与Python实践之(二)k近邻(KNN) (基于稀疏矩阵的k近邻(KNN)实现) 一.概述 这里我们先来看看当我们的数据是稀疏时,如何用稀疏矩阵的特性为KNN算法加速.KNN算法在之 ...

  5. python信息找人的算法_算法篇-python查找算法

    上一篇的递归算法中,了解到算法的复杂度.递归就是在函数中调用本身. 在汉诺塔游戏例子中,如果你需要移动的盘子很多时,程序运行就会消耗很长时间来计算结果.可以回顾下 ->算法篇-python递归算 ...

  6. 【排序算法】python 十大经典排序算法(全网最详)

    排序算法可以分为内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部的排序记录,在排序过程中需要访问外存.常见的内部排序算法有:插入排序.希尔排序.选 ...

  7. 排序算法 快速排序 python 0913

    排序算法 快速排序 python 0913 快速排序 思路 定义快排方法 接收参数:原始列表,起始位置,终止位置 判断是否符合快排条件,当起始下标与终止下标相等时,代表只有一个元素,无法排序,退出 一 ...

  8. 9个元素换6次达到排序序列_全面讲解十大经典排序算法(Python实现)

    作者 | hustcc 链接 | https://github.com/hustcc/JS-Sorting-Algorith 排序算法是<数据结构与算法>中最基本的算法之一.排序算法可以分 ...

  9. python实现雪花动态图_如何通过雪花算法用Python实现一个简单的发号器

    实现一个简单的发号器 根据snowflake算法的原理实现一个简单的发号器,产生不重复.自增的id. 1.snowflake算法的简单描述 这里的snowflake算法是用二进制的,有64位.其中41 ...

最新文章

  1. 某大厂程序员求助:认识一个不错的小姐姐,却得知对方竟有四个兄弟姐妹!想放弃,对方却穷追不舍,怎么办?...
  2. tcp/ip 协议栈Linux内核源码分析12 udp套接字发送流程一
  3. 20200428总结
  4. xs128 双定时器PIT0和PIT1
  5. laravel常用响应操作
  6. 研究生夏令营计算机题目,2017计算机学科夏令营上机考试-B编码字符串
  7. python编程胡牌将是什么意思_OpenCV+Python识别车牌和字符分割的实现
  8. 使用内存文件映射MappedByteBuffer读超大文件可能会遇到的问题
  9. java实现调查问卷_jsp70516调查问卷自动生成与分析系统 双数据库 mysql版
  10. 踩坑:文件路径过长问题(超过260字符)
  11. 如何使用 CSS 设置 HTML 表格样式
  12. 计算机怎么打开网络共享,如何开启Window7的媒体流共享(开启电脑 DLNA 共享)...
  13. 设备功耗计算专题《低功耗实战篇,ESP8266睡眠模式1@深度睡眠Deep-sleep》
  14. 招商银行的“金融+知识”:知其然,更要知其所以然
  15. C# 特性类[笔记]
  16. [转帖]房博士教你购房(一)
  17. 【深度学习】步态识别-论文笔记:(ICCV-2021)用于步态识别的3D局部卷积神经网络
  18. RocketMQ-消息消费模式 顺序消费
  19. Android中文API:AbsListView
  20. android opencv 银行卡识别,【opencv小应用】银行卡号识别(一)

热门文章

  1. .net pdf转图片_PDF转图片要怎么转?两分钟解决!
  2. java设计模式观察者模式_java设计模式--观察者模式
  3. python切换虚拟环境和全局_为什么python虚拟环境启动后依然使用全局的python和pip...
  4. 语言怎么表示词谱_跨语言词表示方法(一)
  5. 服务器生成php文件夹下,PHP创建文件以供下载,而不在服务器上保存
  6. 采用Spring管理Bean和依赖注入
  7. ReactNative绑定函数中的this
  8. 基于JAVA+Servlet+JSP+MYSQL的人事管理系统
  9. mysql group by cube_SQL Server 之 GROUP BY、GROUPING SETS、ROLLUP、CUBE
  10. php的类图怎么生成_PHP网站怎么划UML类图?