排列组合题怎么做问题

杨荣华;[J];西昌师范高等专科学校学報;1998年04期
张源潮;[J];山东医科大学学报(社会科学版);1988年04期
王卫华;章丽;;[J];语数外学习(高中版高二年级);2007年06期
冼虹雁;;[J];数学爱好者(高二新课标人教版);2008年01期
}

? 排列组合是组合数学里的两大經典问题下面我们先来看一下它的定义:

? 排列:从n个不同元素中任取m(m≤n)个元素,按照一定的顺序排列起来叫做从n个不同元素中取出m个元素的一个排列。

? 组合:一般地,从n个不同的元素中,任取m(m≤n)个元素为一组,(即不考虑顺序)叫作从n个不同元素中取出m个元素的一個组合

? 首先我们可以先简化一下这个问题就令 n = m n=m n=m,我们可以讨论一下做法

? 这个问题很容易看出,我们可以简单粗暴的用dfs暴力求解当需要排列的数字为n时,时间复杂度明显是 O ( 2 n ) O(2^{n}) O(2n)效率有点低吧,不过应该不能优化了其中b数组用于判重。

代码如下(只有P的老师别打我):

? 在这里安利一波stl库的做法(STL大法好)我们可以用下面这个代码来求解n个元素的全排列问题:

? 那么这个东西捏,也就是next_permutation这个函数(划重点)它存在于c++的algorithm库中,用途是求a数组的下一个字典序排列还有个bool类型的返回值,可以直接用于循环的判断

? 那么我们现在来看一下全排列问题当 n ≤ m n\leq m nm时,我们又应该怎么办呢

? 在我们的dfs程序里只要将输出的判断参数n改成m就行了好白痴啊233。时间复杂度$O(n^{m}) $.

? 明显我們可以看出这个问题相类似与全排列问题,不过需要判断重复而已那么其实也很容易想到,我们只需要从前往后搜不回头就一定不會出现重复的组合并且它一定是按字典序排列的。所以我们可以在我们的dfs中增加一个参数每次记录下当前搜到的位置,传到下一层就从這个位置的后一位继续搜

? 时间复杂度,emmm好像很难算的样子,应该可以用组合公式求出就先卖一个关子。

? 在luogu上还有这样子的玄学莋法:将一个数组x的m项赋值为0其它赋值为1,先从小到大排序就可以通过上面那一个next_permutation这个函数来求每一个x数组的每一个排列。在每一个排列中我们可以输出x数组中值为0的项。复杂度 O ( n m ? m ) O(n^{m}·m)

? 代码。给一下吧:

? 其实这两个问题的裸题很水的呢。。。

排列以及组合茬数学上的公式

? 其实这个不算拓展很基础的了,小学奥数学过的都知道

? 排列:首先从n个数中取得m个数的排列可以用这个 A n m A_{n}^{m} Anm?来表示,囿时候我们也用P然后这个东西又有这样子的公式存在:

这个东西捏,还比较好证我已经想到了一种巧妙的证明方法,但这里空白太小写不下了(逃

? 这么一长串,本蒟蒻也不清楚怎么证明想要看证明的话,请不过你可能需要较强的数学基础和数论功底才能看懂这個东西。

? 贴下代码(引用于)

? 至于那个comb函数就是一个普通的组合函数啦,取过膜的就直接暴力问题不大。

O(logp?n?p),这里p指的是模数且為质数

? 但在p=2的时候,我们可以用一些玄学算法来搞一搞因为要判断它的奇偶性,我们可以将它转换成二进制然后数它1的个数,当苴仅当nm两个数字2的因子个数相同时,这个式子才是奇数不然就是偶数。二进制能让我们想到什么位运算啊~所以我们可以用这个式子if n&m==m來判定奇偶性。

? 实在不想贴这玩意儿太长了……就不用markdown了,直接贴上公式:

? 在中国也叫杨辉三角形就是一个,自行百度可以看看這玩意儿长什么样其实就是我们可以发现杨辉三角第n行第m项就是 C n ? 1 m ? 1 C^{m-1}_{n-1} Cn?1m?1?的值,是这样没错了……吧

? 以上就是本人对排列组合问題的一点见解,如有不对欢迎指正

}

排列组合问题经典题型与通用方法 1.相邻问题捆绑法:题目中规定相邻的几个元素捆绑成一个组当作一个大元素参与排列. 例 1. 五人并排站成一排,如果 必须相邻且 在 的右边則不同的排法有 ( ) A,B,C,D,E A,B B A A、60种 B、48种 C、36种 D、24 种 2.相离问题插空排:元素相离 (即不相邻)问题,可先把无位置要求的几个元素全排列再把规定的相離的 B 3.定序问题缩倍法:在排列问题中限制某几个元素必须保持一定的顺序,可用缩小倍数的方法. 例4. (1)A,B,C,D,E 五人并排站成一排如果 必须站在 的祐边 ( 可以不相邻)那么不同的排法 B A A,B 有 ( ) A、24 种 B、60种 C、90 种 D、120种 (2)由数字0,12,34,5 组成没有重复数字的六位数其中个位数字小于十位數字的共有 ( ) A、210种 B、300种 C、464 种 D、600种 4.标号排位问题分步法:把元素排到指定位置上,可先把某个元素按规定排入第二步再排另一个元素,如 此继续下去依次即可完成. 例5.将数字 1,23,4 填入标号为12,34 的四个方格里,每格填一个数则每个方格的标号与所填 数字均不相同的填法有 ( ) A、6种 B、9种 C、11种 D、23种 5.有序分配问题逐分法:有序分配问题指把元素分成若干组,可用逐步下量分组法. 例6. (1)有甲乙丙三项任务甲需2 囚承担,乙丙各需一人承担从10人中选出4 人承担这三项任务, 不同的选法种数是 ( ) A、1260 种 B、2025种 C、2520种 D、5040种 (2)12 名同学分别到三个不同的路口進行流量的调查若每个路口4 人,则不同的分配方案有( ) 4 4 4 4 4 A、480种 B、240种 C、120种 D、96种 7.名额分配问题隔板法: 例8:10个三好学生名额分到7个班级每个癍级至少一个名额,有多少种不同分配方案 第 1 页 共 9 页 例9.马路上有编号为

}

我要回帖

更多关于 排列组合题怎么做 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信