You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求集合{1,2,3,4}上符合规则的长度为n的单调序列数量

求解集合{1,2,3,4}上长度为n的单调序列数量

嘿,你的思路完全找对了方向!这个问题确实可以通过组合数学里的「隔板法」轻松解决,咱们一步步拆解清楚:

核心转化逻辑

你提到把n个相同的球放进对应1、2、3、4的4个“袋子”,每个袋子的球数对应序列中该数字的出现次数——这个转化特别精准!原因在于:
对于满足规则的单调序列(允许重复、允许后续数字小于等于前一个,比如2后跟1),序列的本质只取决于每个数字的出现次数:一旦确定每个数字出现多少次,就能唯一构造出符合要求的单调序列(比如按从大到小依次排列所有数字);反过来,任何一个符合规则的单调序列,也能对应唯一的一组数字出现次数。两者是一一对应的关系。

组合数公式推导

现在问题就转化为经典的「可重复组合」问题:把n个相同的球放入4个可空的袋子,有多少种不同的放法?

这类问题的通用公式是:
C(n + k - 1, k - 1)
其中k是袋子的数量(这里k=4),C(a,b)表示从a个元素中选b个的组合数。

代入k=4后,公式简化为:
C(n + 3, 3)

展开计算的话就是:
(n+3)(n+2)(n+1)/6

小例子验证

咱们用小数值验证一下,确保结果正确:

  • 当n=1时,C(4,3)=4,对应序列:1、2、3、4,正好4个,完全符合。
  • 当n=2时,C(5,3)=10,对应序列:(1,1),(1,2),(1,3),(1,4),(2,2),(2,3),(2,4),(3,3),(3,4),(4,4),刚好10个,没错。

补充说明

这里要提一句:不管是允许非递增还是非递减的单调序列,计数结果都是一样的——因为你可以把非递增序列反转得到非递减序列,两者是一一对应的,所以数量完全相同。你的转化思路完美抓住了问题的组合本质,避开了递归或动态规划的复杂计算,非常巧妙!

内容的提问来源于stack exchange,提问作者Yariv Levy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 07:45:43