不相邻的组合个数

转载 2018年04月17日 10:39:07

所谓不相邻的组合是指从A={1,2,3,,n}A={1,2,3,…,n}中选取mm个不相邻的组合个数,即不存在两个数j和j+1的组合。例如,n=4,m=2n=4,m=2,有组合{1,3},{2,4},{1,4}{1,3},{2,4},{1,4}

定理:从A={1,2,3,,n}A={1,2,3,…,n}中取mm个不相邻组合,其组合数为Cmnm+1Cn−m+1m

证明:设B={b1,b2,,bm}B={b1,b2,…,bm}是一组不相邻的组合,假设b1<b2<<bmb1<b2<⋯<bm,令c1=b1,c2=b21,c3=b32,,cm=bmm+1nm+1c1=b1,c2=b2−1,c3=b3−2,…,cm=bm−m+1≤n−m+1,则{c1,c2,,cm}{c1,c2,…,cm}即为从11nm+1n−m+1中取mm个不允许重复的组合,其中0mnr+10≤m≤n−r+1
反之,令A¯={1,2,3,,nm+1}A¯={1,2,3,…,n−m+1},从A¯中取mm个不重复的组合{d1,d2,,dm}{d1,d2,…,dm},其中 d1<d2<<dmd1<d2<⋯<dm.假定 
c1=d1,c2=d2+1,,cm=dm+m1nm+1+(m1)=nc1=d1,c2=d2+1,…,cm=dm+m−1≤n−m+1+(m−1)=n 
c1c2cmc1≤c2≤⋯≤cm,而且 
ci+1ci=(di+1+i)(di+i1)=di+1di+1>1ci+1−ci=(di+1+i)−(di+i−1)=di+1−di+1>1 
{c1,c2,,cm}{c1,c2,…,cm}是从A={1,2,3,n}A={1,2,3…,n}取的m个不相邻的组合。

参考文献: 
组合数学(第四版) 卢开澄 卢华明 著

字符串剔除不相邻的重复字符

字符串剔除不相邻的重复字符
  • ada19950118
  • ada19950118
  • 2015-11-20 21:25:12
  • 1386

不能相邻的字符对

小 W W  理 笔记 【问题 描 述】 小 W 由于购物浪费了太多时间,导致他外语课都没有好好听。为什么是外语课?不是英 语课?因为小 W 肯定会好好听英语课。由于没有好好听课, 小 W 的笔...
  • no1_terminator
  • no1_terminator
  • 2016-11-16 12:35:29
  • 392

不相邻的组合

所谓不相邻的组合是指从A={1,2,3,…,n}A=\{1,2,3,\dots,n\}中选取mm个不相邻的组合个数,即不存在两个数j和j+1的组合。例如,n=4,m=2n=4,m=2,有组合{1,3}...
  • zhengjihao
  • zhengjihao
  • 2017-06-22 19:33:40
  • 749

相同数不能相邻的排列问题 组合数学-容斥原理

题目:1、2、3、4、5各有两个,组成一个十位数,要求相同的数不能相邻,有多少种排法? 思路: 两组数,每组5个各不相同的数,一共是5对儿,进行排列: 0、如果没有要求相同数不相邻,则有10!/(2^...
  • luckyjoy521
  • luckyjoy521
  • 2013-11-21 22:59:04
  • 3161

编程

1、找出n个数里最小的k个 输入描述: 每个测试输入包含空格分割的n+1个整数,最后一个整数为k值,n不超过100。 输出描述: 输出n个整数里最小的k个数。升序输出 示例1 输入 3 ...
  • qq1024884152
  • qq1024884152
  • 2017-08-07 20:44:14
  • 103

程序员

 登录 | 注册 收藏成功 确定 收藏失败,请重新收藏 确定 *...
  • wzx104104104
  • wzx104104104
  • 2017-06-15 21:58:23
  • 155

java 实现排列组合Permutation and Combination和链式不相邻排列组合和环形不相邻排列

java 实现排列组合的所有情况,是一个常用的工具,为所需要的业务逻辑提供基本的构件...
  • qq_28816195
  • qq_28816195
  • 2017-10-01 22:03:45
  • 146

hdu1421n中选k个不相邻数的最小值

//题目大意:有n个物品.每个物品有重量.一个人需要搬动k次物品.每次用两只手搬动.消耗疲劳值为左右手重量差的平方. // 求消耗疲劳的最小值 //解题思路:自己做的时候把n个物品转换...
  • a363514083
  • a363514083
  • 2012-05-16 11:25:42
  • 1444

编程题

1.字符串中找最大串 交错01串(网易2017秋) 如果一个01串任意两个相邻位置的字符都是不一样的,我们就叫这个01串为交错01串。例如: "1","10101","0101010"都是交错01串...
  • answer100answer
  • answer100answer
  • 2017-08-12 20:04:51
  • 128

假设有一个字符串aabcad,请写一段程序,去掉字符串中不相邻的重复字符串,即上述字符串处理之后的输出结果为:aabcd

NSMutableString * str1 = [[NSMutableString alloc] initWithFormat:@"aabcad"]; for (int i = 0; i <...
  • iOS_MingXing
  • iOS_MingXing
  • 2015-11-09 21:32:48
  • 1695
收藏助手
不良信息举报
您举报文章:不相邻的组合个数
举报原因:
原因补充:

(最多只允许输入30个字)