孟梦514 2016-03-23 04:45 采纳率: 50%
浏览 3867
已采纳

元素可重复的组合的问题

有n个不同数,在其中取m个数组成一个集合,可重复取,有多少种取法,这个怎么算呢?
如 0,1,2 三个数,取3个数的集合有
{0,0,0)
{0,0,1}
{0,0,2}
{0,1,1}
{0,1,2}
{0,2,2}
{1,1,1}
{1,1,2}
{1,2,2}
{2,2,2}

  • 写回答

4条回答

  • cxsmarkchan 2016-03-23 12:58
    关注

    前面的回答太繁琐了。有一种更简单的方法(隔板法)。
    假设你要在n个数里面重复取m次,就可以设想下面一种场景:取n+m-1个位置,其中n-1个位置放上隔板,其他的m个位置放上小球。这样,m个小球就被隔板分成了n份(可能有一份中没有小球的情况)。
    从左到右的n份中的小球数目,就对应着原问题的n个数各取了多少次,总共m个小球,表示m次。
    这样,问题的答案就是n+m-1个数里面取n-1个数,这个组合数。可以记作C(n+m-1,n-1)
    例如3个数取3次,就有C(3+3-1, 3-1)=10种取法。
    你举出的{0,1,2}这种组合,对应着3个数各取1次,在隔板法里就对应着"球-板-球-板-球",而(0,0,2)这种组合,就是“球-球-板-板-球”(0取了2次,对应左边有2个球。1取了0次,对应中间两个板之间没有球。2取了1次,对应右边有一个球)。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

悬赏问题

  • ¥20 matlab计算中误差
  • ¥15 对于相关问题的求解与代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 信号傅里叶变换在matlab上遇到的小问题请求帮助
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作
  • ¥15 求NPF226060磁芯的详细资料
  • ¥15 使用R语言marginaleffects包进行边际效应图绘制
  • ¥20 usb设备兼容性问题
  • ¥15 错误(10048): “调用exui内部功能”库命令的参数“参数4”不能接受空数据。怎么解决啊