组合数学汇总

阶乘、排列、组合

阶乘

x ! = Π i : 1 x i x! = \Pi_{i:1}^xi x!=Πi:1xi 。特殊情况0的阶乘是1。

排列

排列 P n m P_n^m Pnm,从n个不同元素中取出m(m≤n)个元素,按照一定的顺序排成一列。第一个元素有n种选择,第二个元素有n-1种选择, ⋯ \cdots
P n m = Π i : n − m + 1 n i = n ! ÷ ( n − m ) ! P_n^m = \Pi_{i:n-m+1}^ni= n!\div (n-m)! Pnm=Πi:nm+1ni=n!÷(nm)!

组合

C n m C_n^m Cnm 从n个不同的元素中,任取m(m≤n)个元素为一组。m个元素的顺序有m!种。故:
P n m ≡ C n m × m ! P_n^m \equiv C_n^m \times m! PnmCnm×m!

多数组合

以求单词的异构词为例。cnt记录26个字母的出现次数。则异构词的数量:
t o t a l [ x ] = ∑ i : 0 x − 1 c n t [ i ] total[x]=\sum_{i:0}^{x-1}cnt[i] total[x]=i:0x1cnt[i]
异构词的数量 = Π i : 0 26 C t o t a x [ 26 ] − t o t a l [ i ] c n t [ j ] 异构词的数量=\Pi_{i:0}^{26}C_{totax[26]-total[i]}^{cnt[j]} 异构词的数量=Πi:026Ctotax[26]total[i]cnt[j]
就是每个字符的组合相乘。

封装类

template<class T >
class CFactorial
{
public:CFactorial(int n):m_res(n+1){m_res[0] = 1;for (int i = 1; i <= n; i++) {m_res[i] = m_res[i - 1] * i;}}	T Com(int iSel, int iCanSel) {return m_res[iCanSel] / m_res[iSel]/ m_res[iCanSel - iSel];}T Com(const vector<int>& cnt) {T biRet = 1;int iCanSel = std::accumulate(cnt.begin(), cnt.end(), 0);for (int j = 0; j < cnt.size(); j++) {biRet *= Com(cnt[j], iCanSel);iCanSel -= cnt[j];}return biRet;}vector<T> m_res;
};

帕斯卡法则及容斥原理

【数学归纳法 组合数学】容斥原理

封装类

template<class Result = C1097Int<> >
class CCombination
{
public:CCombination(){m_v.assign(1, vector<Result>(1,1));}Result Get(int sel, int total){assert(sel <= total);while (m_v.size() <= total){int iSize = m_v.size();m_v.emplace_back(iSize + 1, 1);for (int i = 1; i < iSize; i++){m_v[iSize][i] = m_v[iSize - 1][i] + m_v[iSize - 1][i - 1];}}return m_v[total][sel];}
protected:vector<vector<Result>> m_v;
};

阶乘求组合,初始化时:时间复杂度O(n),查询时:时间复杂度O(3)。
帕斯卡法则求阶乘,初始化时:时间复杂度O(nn),查询时:时间复杂度O(1)。
阶乘求组合用的乘法,帕斯卡法则用的加法,乘法比加法复杂。

题解

排列、组合、多数组合
【归并排序】【图论】【动态规划】【 深度优先搜索】1569将子数组重新排序得到同一个二叉搜索树的方案数
【数学 排列组合】1643. 第 K 条最小指令
【数学】【组合数学】1830. 使字符串有序的最少操作次数
【树 图论 阶乘 组合 深度优先搜索】1916. 统计为蚁群构筑房间的不同顺序
【多数组合 数学 字符串】2514. 统计同位异构字符串数目
容斥原理
【状态压缩 容斥原理 组合数学】3116. 单面值组合的第 K 小金额
其它
【动态规划】C++ 算法458:可怜的小猪
【动态规划】【组合数学】【C++算法】920播放列表的数量
【深度优先搜索】【组合数学】【动态规划】1467.两个盒子中球的颜色数相同的概率
【动态规划】【组合数学】1866. 恰有 K 根木棍可以看到的排列数目
【动态规划】【前缀和】【分组】2338. 统计理想数组的数目
[组合数学]LeetCode:2954:统计感冒序列的数目
【组合数学】2842. 统计一个字符串的 k 子序列美丽值最大的数目

扩展阅读

视频课程

有效学习:明确的目标 及时的反馈 拉伸区(难度合适),可以先学简单的课程,请移步CSDN学院,听白银讲师(也就是鄙人)的讲解。
https://edu.csdn.net/course/detail/38771

如何你想快速形成战斗了,为老板分忧,请学习C#入职培训、C++入职培训等课程
https://edu.csdn.net/lecturer/6176

相关下载

想高屋建瓴的学习算法,请下载《喜缺全书算法册》doc版
https://download.csdn.net/download/he_zhidan/88348653

我想对大家说的话
闻缺陷则喜是一个美好的愿望,早发现问题,早修改问题,给老板节约钱。
子墨子言之:事无终始,无务多业。也就是我们常说的专业的人做专业的事。
如果程序是一条龙,那算法就是他的是睛

测试环境

操作系统:win7 开发环境: VS2019 C++17
或者 操作系统:win10 开发环境: VS2022 C++17
如无特殊说明,本算法用**C++**实现。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/834050.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

AR人脸美妆SDK解决方案,让妆容更加贴合个人风格

美妆行业正迎来前所未有的变革&#xff0c;为满足企业对高效、精准、创新的美妆技术需求&#xff0c;美摄科技倾力打造了一款企业级AR人脸美妆SDK解决方案&#xff0c;为企业打开美妆领域的新世界大门。 革命性的人脸美妆技术 美摄科技的AR人脸美妆SDK解决方案&#xff0c;不…

IDEA设置 | 个性化设置

文章目录 IDEA设置总结IDEA自动生成序列化ID IDEA设置总结 本篇博客将专注于整理IDEA新UI界面的相关设置 IDEA自动生成序列化ID CtrlAltS快捷键打开设置界面 选择Editor→Inspections→JVM languages→Test frameworks&#xff0c;勾选上Serializable class without serialVe…

SpringCloud微服务之Eureka、Ribbon、Nacos详解

SpringCloud微服务之Eureka、Ribbon、Nacos详解 1、认识微服务1.1、单体架构1.2、分布式架构1.3、微服务1.4、SpringCloud 2、服务拆分与远程调用2.1、服务拆分的原则2.2、服务拆分示例2.2、提供者与消费者 3、Eureka注册中心3.1、Eureka的结构和作用3.2、搭建eureka-server3.2…

《构建高效审批系统:架构设计与实践》

在现代企业管理中&#xff0c;审批系统扮演着至关重要的角色&#xff0c;它不仅能够规范业务流程&#xff0c;提高工作效率&#xff0c;还能够增强企业的管理控制力和信息化水平。本文将探讨如何设计和构建一套高效的审批系统架构&#xff0c;以满足企业日常审批需求&#xff0…

docker-compose部署gitlab

需要提前安装docker和docker-compose环境 参考&#xff1a;部署docker-ce_安装部署docker-ce-CSDN博客 参考&#xff1a;docker-compose部署_docker compose部署本地tar-CSDN博客 创建gitlab的数据存放目录 mkdir /opt/gitlab && cd mkdir /opt/gitlab mkdir {conf…

纹理映射技术在AI去衣应用中的关键作用

引言&#xff1a; 随着人工智能技术的飞速发展&#xff0c;其在图像处理领域中的应用也日益广泛。AI去衣&#xff0c;作为一种颇具争议的技术应用&#xff0c;指的是利用深度学习算法自动移除或替换图片中的衣物。在这一过程中&#xff0c;纹理映射技术扮演了不可或缺的角色。本…

初识指针(3)<C语言>

前言 前面两篇文章已经介绍了一些关于指针的基础知识&#xff0c;下面我们可以涉及一些指针较容易混淆的概念&#xff0c;本篇文章将介绍数组名的理解、指针输入打印数组的不同格式、一维数组传参的本质&#xff0c;冒泡排序&#xff0c;二级指针&#xff0c;指针数组等。 数组…

学SQL啦

3 SQL 3.1 SQL查询语言 新手学习网址&#xff1a;https://sqlzoo.net/wiki/SQL_Tutorial SQL查询语句语法结构和运行顺序 语法结构&#xff1a;select--from--where--group by--having--order by--limit运行顺序&#xff1a;from--where--group by--having--order by--limit-…

十二届蓝桥杯Python组1月中/高级试题 第一题

** 十二届蓝桥杯Python组1月中/高级试题 第一题 第一题&#xff08;难度系数2&#xff0c;18 个计分点&#xff09; 编程实现&#xff1a; 输入一个字符串&#xff0c;输出这个字符串的最后一个字符。 输入描述&#xff1a;输入一个字符串 输出描述&#xff1a;输出这个字符串…

短视频批量下载解决方案分享

对于作短视频运营的行业人员&#xff0c;获取对应的视频资源和素材是必不可少的。 所以需要一个批量搜索视频并且下载的工具非常重要 一&#xff1a;行业痛点&#xff1a; 1&#xff1a;只能通过单链接进行下载 2&#xff1a;不能通过关键词批量下载 3&#xff1a;无法获取…

【Ubuntu20.04安装java-8-openjdk】

1 下载 官网下载链接&#xff1a; https://www.oracle.com/java/technologies/downloads/#java8 下载 最后一行 jdk-8u411-linux-x64.tar.gz&#xff0c;并解压&#xff1a; tar -zxvf jdk-8u411-linux-x64.tar.gz2 环境配置 1、打开~/.bashrc文件 sudo gedit ~/.bashrc2、…

Day2 | Java基础 | 2 数据类型

Day1 | Java基础 | 2 数据类型 基础版staticstatic的用法static修饰内部类static修饰方法static修饰变量static修饰代码块 深入分析static小结 问题回答版参数传递形参和实参的区别是什么&#xff1f;Java是值传递还是引用传递&#xff1f;值传递和引用传递的区别是什么&#x…

架空光缆用什么型号

架空光缆是什么意思 , 架空光缆用什么型号的 GYTC8A , 架空光缆型号是啥 8字形光缆 产品描述 Description GYTC8A光缆的结构是将250m光纤套入高模量材料制成的松套管中&#xff0c;松套管内填充防水化合物。缆芯的中心是一根金属加强芯&#xff0c;松套管(和填充绳 )围绕中心…

【汇总】虚拟机网络不通(Xshell无法连接虚拟机)排查方法

搜索关键字关键字关键字&#xff1a;虚拟机虚拟机虚拟机连接失败、虚拟机无法连接、Xshell连接失败、ping baidu.com失败、静态IP设置 Kali、CentOS、远程连接 描述&#xff1a;物理机无法连接虚拟机&#xff1b;虚拟机无法访问百度&#xff0c;虚拟机无法访问baidu.com 虚拟机…

Java数组的使用

前言 这里我使用的是IDEA编译器进行演示 数组的创建与初始化 创建格式&#xff1a; T[] 数组名 new T[N] T表示数组存放的数据类型&#xff0c;N表示数组的大小。 T[] 表示数组的类型。 这里要注意和C语言不同的是C语言使用类似int arr[10]这样的结构进行创建数组&#xff0c…

电脑文件x3daudio1 7.dll怎么修复?快速修复x3daudio1 7.dll的方法

你试过电脑文件x3daudio1 7.dll丢失么&#xff1f;如果你有遇到这种情况&#xff0c;那么可能你的某些程序就会启动不了&#xff0c;毕竟这个文件是用来处理音频功能的&#xff0c;那么我们要怎么去修复&#xff1f;下面我们一起来详细的了解电脑文件x3daudio1 7.dll这个文件吧…

作为新型锂离子电池正极材料 磷酸锰铁锂(LMFP)行业发展空间有望扩展

作为新型锂离子电池正极材料 磷酸锰铁锂&#xff08;LMFP&#xff09;行业发展空间有望扩展 磷酸锰铁锂&#xff08;LMFP&#xff09;指在磷酸铁锂基础上添加锰元素而制成的新型磷酸盐类锂离子电池正极材料。磷酸锰铁锂含有橄榄石型结构&#xff0c;生产成本低、能量密度高、绿…

中国GDP空间分布数据集、中国人口空间分布数据集、GDP密度分布、人口密度分布数据、夜间灯光分布数据、土地利用数据、道路网分布数据、乡镇边界分布

引言 GDP&#xff08;国内生产总值&#xff09;是指一个国家或地区所有常驻单位在一定时期内生产的所有最终产品和劳务的市场价值。GDP是表征宏观经济发展状况的基础性指标。GDP是社会经济发展、区域规划和资源环境保护的重要指标之一&#xff0c;通常以行政区为基本统计单元。…

echarts 处理数据

假如 我数据是这样式的 一个数组里边包含两个对象 var data [{ "gender": "female", "height": 161.2, "weight": 51.6 }, { "gender": "female", "height": 167.5, "weight": 59 }] 想转换…

HTML学习|初识表单post和get提交、文本框和单选框、按钮、多选框和下拉框、文本域和文件域、搜索框滑块和简单验证、表单的应用、表单初级验证

初识表单post和get提交 form标签是表单&#xff0c;method控制表单提交方式&#xff0c;get方式&#xff0c;表单填写的参数能够在跳转的url地址中看到&#xff0c;post方式是看不到的&#xff0c;action是向何处跳转表单数据 input标签&#xff0c;且typetext&#xff0c;是…