问题:

总结   https://blog.csdn.net/qwb492859377/article/details/50654627

N个球放M个盒子问题   https://blog.csdn.net/zwz_511/article/details/46240927

算法:

HDU - 6397 Character Encoding 插板法+容斥原理  https://blog.csdn.net/xiang_6/article/details/81868989

[ACM] POJ 1664 放苹果(n个相同小球放入m个相同盒子)  https://blog.csdn.net/sr_19930829/article/details/38293297

m个相同的bean和n棵不同的树,每棵树可以放也可以不放beans  https://blog.csdn.net/moon_sky1999/article/details/81835284

n个球放入m个盒子,使用程序输出所有的放法?   https://www.zhihu.com/question/51448931

递归解

#include<iostream>
using namespace std;
void Select(int i,int j,const int m,int *x,int &num){//i为第i个盒子。0<=i<=m-1。j是剩余球数。x为放置球的解法,num可有可无,记录放置的方法数目。if (i > m)return;if (j == 0){num++;cout << "x可行序列为 : (";for (int i = 0; i < m; i++){cout << x[i];if (i != m - 1)cout << ",";elsecout << ")" << endl;}return;}for (int k = j; k >= 0; k--){if (i == m)return;x[i] = k;Select(i + 1, j - k, m, x,num);x[i] = 0;}
}
int main(){int num = 0;int m = 5, n = 3;int x[5] = { 0 };Select(0, n, m, x,num);cout << "共 " << num << "种" << endl;return 0;
}

r用于记录当前的结果,p是写入该缓存的位置。那么f(r,p,n,m)的意义就是把n个球放入m个盒子。如果只有一个盒子就打印结果,>1个盒子就放入0至n个球到当前盒子,余下的球和盒子递归调用f()

------------------------------------------------------------------------------------------------------------------------------------------------------------------------

题意:

a1 + a2 + ... + am = k , 0 <= ai < n;  给定n m  k 问:上述式子成立的种类数有多少,1+2=3 和 2+1=3 是两种情况

思路:

说到这个题必须要说的是组合数学的隔板法:

①k个相同的小球放入m个不同的盒子,每个盒子不为空的种类数:k-1个空隙中插入m-1个板子,C(k-1, m-1)

②k个相同的小球放入m个不同的盒子,可以允许有的盒子为空种类数:我们再加上m个球,按照①式不为空求解,因为分割完后,每个盒子减去1,就是当前问题的解,即:C(k-1+m, m-1);

对于本题,可以理解成k个相同的球放入m个不同的盒子,每个盒子可以为空,但是个数不能大于等于n;

正男则反,我们算总的减去大于等于n个情况的种类数,容斥一下、待更、、

#include<iostream>
using namespace std;
void Select(int i,int j,const int m,int *x,int &num){//i为第i个盒子。0<=i<=m-1。j是剩余球数。x为放置球的解法,num可有可无,记录放置的方法数目。if (i > m)return;if (j == 0){num++;cout << "x可行序列为 : (";for (int i = 0; i < m; i++){cout << x[i];if (i != m - 1)cout << ",";elsecout << ")" << endl;}return;}for (int k = j; k >= 0; k--){if (i == m)return;x[i] = k;Select(i + 1, j - k, m, x,num);x[i] = 0;}
}
int main(){int num = 0;int m = 5, n = 3;int x[5] = { 0 };Select(0, n, m, x,num);cout << "共 " << num << "种" << endl;return 0;
}

排列组合 n个球放入m个盒子算法 总结相关推荐

  1. 排列组合 n个球放入m个盒子问题 总结

    算法: HDU - 6397 Character Encoding 插板法+容斥原理  https://blog.csdn.net/xiang_6/article/details/81868989 [ ...

  2. 排列组合 “n个球放入m个盒子“里,再来一遍

    1.球同,盒不同,无空箱 C(n-1,m-1), n>=m 0, n<m 使用插板法:n个球中间有n-1个间隙,现在要分成m个盒子,而且不能有空箱子,所以只要在n-1个间隙选出m-1个间隙 ...

  3. 排列组合 n个球放入m个盒子m问题 总结

    求,盒子都可以分成是否不能区分,和能区分,还能分成是否能有空箱子,所以一共是8种情况,我们现在来一一讨论. 1.球同,盒不同,无空箱 C(n-1,m-1), n>=m 0, n<m 使用插 ...

  4. 排列组合 “n个球放入m个盒子m“问题 总结

    求,盒子都可以分成是否不能区分,和能区分,还能分成是否能有空箱子,所以一共是8种情况,我们现在来一一讨论. 1.球同,盒不同,无空箱 C(n-1,m-1), n>=m 0, n 使用插板法:n个 ...

  5. n个小球放入m个盒子中_【转】排列组合 n个球放入m个盒子m问题 总结

    球,盒子都可以分成是否不能区分,和能区分,还能分成是否能有空箱子,所以一共是8种情况,我们现在来一一讨论. 1.球同,盒不同,无空箱 C(n-1,m-1), n>=m 0, n 使用插板法:n个 ...

  6. 排列组合问题 “n个球放入m个盒子(8种)”

    1.球相同,盒相同,允许空箱 2.球相同,盒相同,无空箱 3.球相同,盒不同,无空箱 4.球相同,盒不同,允许空箱 5.球不同,盒相同,无空箱 6.球不同,盒相同,允许空箱 7.球不同,盒不同,无空箱 ...

  7. 算法题(模板)——N个球放入M个盒子中

    题目:n个球放入m个盒子中,有多少种放法 情况一:球同,盒不同,无空盒 也就是所有球都是一样的,但是盒子有区别,且不能出现空放的情况. 采用插板法,相当于在n-1个空隙中,插入m个盒子,而由于不能有空 ...

  8. n个小球放入m个盒子中_联考数学复习指导:M个球放入N个盒子

    为了广大学员能够更好的备考2015年考研, 特收集了联考数学指导:M个球放入N个盒子,希望对各位考生有所帮助. M个球放入N个盒子的放法 N个盒子编号为1到N, 把M个相同的球放入这N个不相同的盒子, ...

  9. n个小球放入m个盒子中_M个球放入N个盒子的放法

    M个球放入N个盒子的放法 1.N个盒子编号为1到N, 把M个相同的球放入这N个不相同的盒子,问共有多少种放法. M个球分成了N组,即装入N个盒子.如果要求每个盒子至少有一个球,则要求M>=N. ...

最新文章

  1. 你们可能都小看了Windows!
  2. python什么是交换算法_python算法-015将链表元素两两交换元素(交换值、就地翻转)...
  3. VC++动态链接库(DLL)编程深入浅出
  4. PADS Layout的一个鼠标小技巧
  5. linux 软raid配置-系统安装
  6. git复制迁移--SmartGit
  7. html5从基础到入门,Html5从入门到精通系列2:Html5基础
  8. 伦敦大学学院计算机残疾,伦敦大学学院残疾、设计和创新理学硕士
  9. 中国量子技术产出居世界第二 英国量子技术未来5个发展方向
  10. Gps开发实战——卫星数量获取
  11. OpenWrt 无线桥接
  12. InstallShield Limited Edition Project下载及进行打包发布汇总
  13. xThunder —— 完美支持Firefox的迅雷,旋风调用扩展
  14. 道路交通车路协同信息服务通用技术要求
  15. python股票代码示例_补全股票代码位数的一百种姿势
  16. 制作双启动(传统BIOS与UEFI均可引导的U盘)
  17. 大学四年学习生活成长总结
  18. 62-Mybatis高级介绍
  19. login主页面+接口+依赖
  20. readlink 获取进程的绝对路径

热门文章

  1. FISCO BCOS相关问题讨论
  2. [赛后总结]2020.2.29考试总结
  3. 基于微服务的新零售业务中台OMS
  4. 【UE4】从零开始制作战斗机(中:飞机操控逻辑)
  5. 7-1 求奇数分之一序列前N项和 (15 分)
  6. 51单片机-1602液晶显示的时钟代码
  7. 链条电动葫芦的导体结构
  8. Day171.基本内容 -Dubbo
  9. Java:class4 类和对象
  10. 高中数学函数解题方法:函数的单调性与最值(高考题)