【go/方法记录】数学中的组合问题
问题描述
- 主要解决数学中排列组合中的组合问题,即:
Cnr=Anrr!C_n^r=\frac{A_n^r}{r!}Cnr=r!Anr
解决
- 参见这个
- 原理
- 计算∑r=0nCnr\sum_{r=0}^n C_n^r∑r=0nCnr,即二项式定理,共2n2^n2n种组合,可以使用n个比特位表示。
例如n=3n=3n=3时:
000,001,010,011,100,101,110,111 - 取出其中满足:bit位1的数目为r的组合,即结果
例如n=3,r=2n=3,r=2n=3,r=2时:
011,101,110
- 计算∑r=0nCnr\sum_{r=0}^n C_n^r∑r=0nCnr,即二项式定理,共2n2^n2n种组合,可以使用n个比特位表示。
- 代码
// 其他数组类型均可使用 func Combinations(set []string, n int) (subsets [][]string) {length := uint(len(set))if n <= 0 {return}if n > len(set) {n = len(set)}// 从1遍历到2^lengthfor subsetBits := 1; subsetBits < (1 << length); subsetBits++ {// 如果subsetBits中bit 1的数量不为n,跳过if n > 0 && bits.OnesCount(uint(subsetBits)) != n {continue}var subset []string// 将对应bit 1的位置(index)对应的set[index]取出来for object := uint(0); object < length; object++ {if (subsetBits>>object)&1 == 1 {subset = append(subset, set[object])}}// 添加到返回值subsets = append(subsets, subset)}return subsets }
【go/方法记录】数学中的组合问题相关推荐
- 《多媒体在初中数学中的运用研究》课题研究活动记录
<多媒体在初中数学中的运用研究>课题研究活动记录 石头镇初级中学课题组 李佩佩 小课题研究活动记录(一) 时 间 2020年 4月 1日 主持人 李佩佩 人 员 数学组全体成员 发言人 李 ...
- 创新方法系列 如何找联系 符号化就是找数学中的等于==关系,遇到等号请留意
创新离不开观察力 思考力 想象力三大力的支撑 找联系是科学中三大基本能力 观察力 思考力 想象力 中的最重要的观察力的体现, 创新方法系列 如何找联系 符号化就是找数学中的等于==关 ...
- ThinkPHP公共配置文件与各自项目中配置文件组合的方法
ThinkPHP公共配置文件与各自项目中配置文件组合的方法 文章TAG:thinkphp 公共配置文件 时间:2014-11-25来源:www.aspku.com 作者:源码库 文章热度: 146 ℃ ...
- LeetCode中常用语言的一些基本方法记录
文章目录 LeetCode中常用语言的一些基本方法记录 Java 数组 数组的常用操作及方法 Arrays工具类 Collections类常用方法总结 二维数组 字符串常用属性及方法 JavaScri ...
- Xlua中的util脚本中的async_to_sync方法 记录
整理一下xlua中的async_tosync() 参考xlua案例7 async_to_sync() 将一个传递过来的方法包装成一个需要在协程中执行的方法, 通过这个方法调用参数中的方法时会自动添加一 ...
- 信奥中的数学:排列组合
排列组合题型总结课程(一) 排列组合题型总结课程(一)_哔哩哔哩_bilibili 排列组合的公式 排列组合的公式_百度知道 [Manim动画]如何以可视化视角直观理解排列组合? [Manim动画]如 ...
- 基于深度强化学习的组合优化方法在工业应用中的实践
<统筹方法平话>中有一个例子曾被收录到语文课本中,讲"烧水泡茶"有五道工序:1.烧开水,2.洗茶壶,3.洗茶杯,4.拿茶叶,5.泡茶,其中前四道工序是泡茶的前提,且各道 ...
- 用html写出分子分母,数学中的分数分子分母用英文拼写方法
数学中的分数分母分子的英文拼写方法 分数:fractions 分子:numerator 分母:denominator 数学中的分数分类及英文拼写 分数:fractions 繁分数:mixed numb ...
- 使用java实现数学中的排列组合公式A和C以及阶乘
package math;public class Stastic {/*** 数学中的统计方法,用于整数,A(3,2)即3*2,A(5,3)即5*4*3* @param first 开始的数* @p ...
最新文章
- 交叉熵损失函数数学推导
- Spark 把RDD数据保存到hdfs单个文件中,而不是目录
- 反射工具类 java_Java反射工具类
- poj1015 Jury Compromise
- python合并excel文件关键字_python合并多个excel文件的示例
- 推荐一个高质量的git命名查询和学习的github仓库git-recipes
- 让事件飞——Linux eventfd 原理
- 【ES6(2015)】String
- 前端笔记-thymeleaf获取及回显input标签type=date
- HDU 4336 Card Collector(容斥原理+状态压缩)
- java打印tomcat内存溢出_tomcat内存溢出问题监控工具
- Android RecyclerView之PagerSnapHelper原理解析(二)
- 科学计算机病毒代码大全,计算机病毒代码有哪些
- 关于android studio报错Attempt to invoke virtual method 'void android.widget.ListView.setAdapter(android.
- Javashop连锁门店系统帮助企业快速搭建自己企业商城
- 19条优秀的编码原则
- c/c++实现二叉树的创建以及前中后序遍历
- hud android,HUD | F-Droid - Free and Open Source Android App Repository
- i78750h怎么样
- -Dmaven.multiModuleProjectDirectory system propery is not set. Check $M2_HOME environment variable a