从S={1,2,3,....,n}中选择k个不相邻的数,有多少种方法

离散数学组合数学部分的例12.6

解析没看懂,自己上网查阅了一些资料。网上内容都是长篇大论,抽丝剥茧一下。

简单的建模尝试。

一,约束条件。

要求为“不相邻”。

不妨假设取的数为a1,a2,...,ak。

对于间距来说,就有:

二,解决方法。

1.动态规划

在Quora上看到过一个帖子,

“如何给四岁小孩解释动态规划。”

大概内容就是:

给小孩在纸上写下:“1+1+1+1+1+1+1+1”,让他计算结果。

小孩努力算出来了是8。

然后让小孩在左面在写一个“1+”,问他答案是几,小孩一下子就得到了是9。

为什么呢? 

因为他知道后面那一长串答案是多少。

动态规划就是“remembering stuff to save time。”记住一些东西,可以节省时间。

也就是所谓的,用小问题的解来推导大问题的解。

定义 dp[i][j]: 表示从前 i 个数中选出 j 个不相邻数的方法数。

对于前i个数的集合而言,

这里的dp[i][j]有两个状态,

那么边界条件也就很明显了。

举个例子,从5个数里选择2个不相邻的数字,

dp[5][2]=dp[3][1]+dp[4][2] 

对于dp[3][1]:你已经选择了第五个,接下来选择另一个数字只能从前3个里再选1个。

对于dp[4][2]:你没有选择第五个,接下来就要从前四个数字里选择两个。

dp[4][2]=dp[2][1]+dp[3][2]

dp[3][2]=dp[1][1]+dp[2][2],显然dp[2][2]不成立。所以记作0。

dp[3][2]=1,

dp[4][2]=2+1=3

dp[5][2]=3+3=6,

over

2.组合分析,是书上的步骤

这个其实就是书上的方法,但我查了很多资料才明白。

作者:与我无关的忧伤
链接:https://www.zhihu.com/question/25820012/answer/702189237
来源:知乎

作者大大真的牛

从 n 个数里面取 k 个之后,那么这 k 个里有 k+1 个空。

题目的意思是这 k 个数两两不相邻,这说空隙 1∼k−1 中间都需要有数填充;0,k 是可以不填也可以填。

这就可以转化为一个方程组的解的问题:

设空隙 0∼k 所填的值为

则有方程

其中有限制条件 x0≥0,xk≥0,xi≥1,i=1,2,...k−1  ,i=1,2,...k-1

所以需要求解的是上面方程在有限制条件下的解的个数,换元处理

PS:这步就是书上困扰人很久的n-2k+1。

这里直接放作者大大的题解了

PS:因为我没看懂

还有一种方法等期末周以后再补吧

希望搜这道题的各位期末取得好成绩啦~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值