常见的排列组合问题

来源:互联网 发布:郝斌c语言不压缩百度云 编辑:程序博客网 时间:2024/05/01 08:46

1.在6*9的方格中,以左上角为起点,右下角为终点,每次只能向下或向右走,请问一共有多少种不同的走法。

 一共要走13步,其中必然有5步向下,8步向右。那么就是从13步中选5步向下或者从13步中选出8步向右,则共有种。


2.ABCDEFG七人战队,要求A必须在B的左边,但不一定相邻,请问有多少种排法?如果A必须在B的左边,并且一定要相邻,请问一共有多少种排法?

不相邻:

7人全排列一共有7!中排法,其中A在B的左边占一半,A在B的右边占一半,那么A在B的左边共有7!/2种排法

相邻:

把AB看做一个人,那么就相当于6个人做全排列,那么共有6!种排法


3,6个人排成一排,要求甲与乙不相邻,并且甲与丙不相邻的排法有多少种?

方法一:6人全排列为6!。甲乙相邻,甲与乙看出一个人有5!种,但是甲乙,乙甲为不同的排列,则为2*5!种。同理甲丙相邻为2*5!种。但是甲乙相邻与甲丙相邻有重合的部分为乙甲丙或者丙甲乙。乙甲丙时为4!种,丙甲乙为4!种。所以最终的排列数为:6!-2*5!-2*5!+4!+4!=288种

方法二:当甲在左侧开头位置时,甲的相邻位置有3种选择,剩下的人是4!种,则有3*4!=72种。同理甲在右侧末尾位置时也有72种。当甲不在开头和末尾时,甲有4种选择,当甲在其中一个位置时,左右邻居是从3个选择2个,剩下的位置3!,那么有4**3!=144种。那么最终的排列数为72+72+144=288种


4,10颗相同的糖果,分给3个人,每人至少有一颗,那么有多少种分法?

10颗糖果中间位置有9个,分给3个人,每人都要有,那么该问题就变成了在9个中间位置中选出2个进行插板。=36种


5,10个不同的球放入3个不同的桶中有多少种方法?

每个球有3种选择,共有3^10种方法


6,有10颗糖果,如果每天至少吃一颗,吃完为止,问有多少种不同的吃法

1天吃完    1种

2天吃完     9个空隙,1个隔板

……

10天吃完   9个空隙,9个隔板

那么总共有


7,假设有n对左右括号,请求出合法的排列有多少个?

左括号数n,右括号数n,总排列数为。每一个不合法的排列通过(左括号为1,右括号为-1,当-1的数量比1的数量第一次多时将该位置以前的1,-1互换,后面的不变换)以上变换能够得到n+1个1,n-1个-1,那么非法排列数为:,那么合法的排列数为(卡特兰数的重要公式之一)

n个数进出栈的顺序有多少种?/ 2n个人排队买票,n个人拿5块钱,n个人拿10块钱,票价是5块钱1张,每人买1张票,售票员手里没零钱,问有多少种方法让售票员可以顺利卖票。/ 12个高矮不同的人排成两排,每排必须是从矮到高排列,而且第二排比对应的第一排人高,问有多少张排列方式。   都是上面案例一样的解法


8,求n个无差别的节点构成的二叉树有多少种不同的结构?

假设n个无差别的节点构成不同的结构数为f(n).

f(0)表示空树,结构数为1

以节点1为头结点,左孩子为空结构数f(0),右孩子有n-1个点结构数f(n-1),总的结构数f(0)*f(n-1)

以节点2为头结点,左孩子为1个节点结构数f(1),右孩子有n-2个点结构数f(n-2),总的结构数f(1)*f(n-2)

以节点3为头结点,左孩子为2个节点结构数f(2),右孩子有n-3个点结构数f(n-3),总的结构数f(2)*f(n-3)

…………

以节点n为头结点,左孩子为n-1个节点结构数f(n-1),右孩子有n-3个点结构数f(0),总的结构数f(n-1)*f(0)

则总的结构数为:

f(0)*f(n-1)+f(1)*f(n-2)+f(2)*f(n-3)+……+f(n-1)*f(0)=(卡特兰数的重要公式2)


9,n个信封有n封信,现在把信拿出来再装回去,要求每封信不能装回它原来的信封,问有多少种装法?

n封信按照题目要求的装法即为f(n)

假设第n封信放入了第i个信封,情况一:第i封信放入了第n个信封,那么后续为f(n-2);情况二:第i封信没有放入第n个信封,那么后续为f(n-1)

n个信封放入i个信封,i的选择有n-1种,所以总数为f(n)=(n-1)*(f(n-1)+f(n-2))

采用倒推的方法求得,f(1)=0,f(2)=1






0 0
原创粉丝点击