有重复元素的排列问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了有重复元素的排列问题相关的知识,希望对你有一定的参考价值。

pascal

设集合R=r1,r2,...,rn是要进行排列的n个元素,其中r1,r2,...,rn可能相同。
试着设计一个算法,列出R的所有不同排列。
即,给定n以及待排的n个可能重复的元素。计算输出n个元素的所有不同排列。
第1行是元素个数n,1<=n<=15程序运行结束时,将计算输出n个元素的所有不同排列。最后1行中的数是排列总数。

(说明:
此题,所有计算出的排列原本是无所谓顺序的。但为了容易评判,输出结果必须唯一!
现做约定:所有排列的输出顺序如课本P11的例2-4的程序段的输出顺序,区别仅是这道题是含重复元素。)
。接下来的1行是待排列的n个元素,元素中间不要加空格追问

我要程序,不是讲解,复制的……%……

参考技术A 全排列允许重复元素。
顺便告诉你,n个元素的全排列数为:n!(n的阶乘)

一个关于含有可重复元素的排列问题

一个关于含有可重复元素的排列问题例如:已知数字3、2、2,其排列个数n=(3的阶乘)/(1的阶乘*2的阶乘)=3。

为什么我看不懂这个结论呢?还请大家帮我解释一下这个结论,谢谢!

n个位置取n1个位置给第1个元素有C(n,n1)种取法,
n-n1个位置取n2个位置给第2个元素有C(n-n1,n2)种取法,
n-n1-n2个位置取n3个位置给第3个元素有C(n-n1-n2,n3)种取法,
.....
所以排列个数=C(n,n1)*C(n-n1,n2)*C(n-n1-n2,n3)*....=结论
参考技术A 随便买一本离散的书,上面就有具体证明,以你上面的公式来说
S中有n1个a1,那么在S的全排列中要占据n1个位置,选法有C(n,n1)种
然后,剩下n-n1个位置里要选n2个组合,有C(n-n1,n2)种方法
。。。
把这些取法用乘法原则乘起来,就是一共有几种排列法
C(n,n-n1)*C(n-n1,n2)*.....以第一第二项为例,会发现一个分母上有(n-n1)!一个分子上有,就约掉了,最后剩下的就是那个结论的式子
参考技术B 写的这么清楚明了,你看不懂?智商啊追问

我倒是知道遇到这类问题,直接套这个公式就行,就是不知道原理呀!

追答

不用知道

追问

😅

以上是关于有重复元素的排列问题的主要内容,如果未能解决你的问题,请参考以下文章

有重复元素的全排列

有重复元素的排列问题

作业2.有重复全排列和无重复全排列的区别

有重复元素的全排列

递归与回溯14:排列问题,有重复元素的全排列

有重复元素的排列问题(Java)