将m个相同的球全部放到n个相同的盒子里面有几种放法
来源:互联网 发布:csol mac 编辑:程序博客网 时间:2024/06/06 01:49
盒子不能为空,所以可以当成将m-n个球放到n个盒子里,盒子可以为空。
比如将10个球放到5个盒子里,可以当成5个球放到5个盒子里,盒子能为空。接着,再分情况,将球分为
(5,0,0,0,0)
(4,1,0,0,0)或(2,3,0,0,0)
(3,1,1,0,0)或(2,2,1,0,0)
(2,1,1,1,0)
(1,1,1,1,1)
也就是1个盒子不能为空,2个盒子不能为空,3个盒子不能为空,到5个盒子都不能为空。
是不是跟一开始的时候很像,m个球放到n个盒子不能为空?这时候想到了什么?对,递归。
用一个函数fun(m,n)来获取m个球放到n个盒子里不能为空的情况(也可以用能为空的,这里用的是不能为空的)
上面的可以转换成
fun(5,1)+fun(5,2)+fun(5,3)+fun(5,1)+fun(5,0) //其中n为0的情况即刚好每个盒子分到一个球,这个也要算进去
如果有非递归方法的,欢迎提出来探讨^_^,我自己的理解,不知道对错,有错请指出,谢谢!
#include <iostream> 06.using namespace std; 07. 08.int fun(int m, int n) { 09. if (m < n) //m<n返回0 10. return 0; 11. if (n == 1 || (m - n) <= 1) //盒子为1时,球只有一个或0(0个即球刚好均分),时都只有一种分配方法 12. return 1; 13. 14. int s = 0, count; //s记录总数,count为递归次数 15. 16. if (m - n < n) //去掉每个盒子分配的一个球后,球的数量少于盒子数,则只要递归球的个数次 17. count = m - n; //球数少的情况 18. else 19. count = n; //盒子数少的情况 20. 21. for (int i = 1; i <= count; i++) { 22. s += fun(m - n, i); //递归 23. } 24. 25. return s; 26.} 27. 28.int main(int argc, char **argv) { 29. 30. cout << "\t"; 31. for (int i = 1; i <= 15; i++) { 32. cout << i << "\t"; 33. } 34. cout << endl; 35. 36. for (int i = 1; i <= 15; i++) { 37. cout << i << "\t"; 38. for (int j = 1; j <= 15; j++) { 39. cout << fun(i, j) << " "; 40. } 41. cout << endl; 42. }
转自【@AstrayLinux】
0 0
- 将m个相同的球全部放到n个相同的盒子里面有几种放法
- 将m个相同的球全部放到n个相同的盒子里面有几种放法,盒子不能为空
- m 个相同的球放入n 个相同的盒子里
- m个苹果分在n个相同的盒子
- (11)分苹果问题:将m个相同的苹果放到n个相同的盘子中,多少钟分法?
- 将n个相同小球放入m个不同盒子内的放法种数
- 2017年第0届浙江工业大学之江学院程序设计竞赛决赛 Problem C: 勤劳的ACgirls(n个相同球放到m个不同的盒子里。)
- UESTC 1721:吴神,人类的希望_n个相同的球放进m个相同的盒子的问题
- 给你m个东西,放在n个相同的盒子中(相同,即不计顺序),每个盒子可以放任意多,问有多少种放法
- 将m个相同的苹果放进n个相同的盘子中,盘子允许空,有多少种方法
- [ACM] POJ 1664 放苹果(n个相同小球放入m个相同盒子)
- m个相同苹果放的n个相同盘子中的算法
- poj 1664 放苹果 将m个相同的苹果放进n个相同的盘子中,盘子允许空,有多少种方法
- C/C++编程题1-放苹果,将m个相同的苹果放进n个相同的盘子中,盘子允许空,有多少种方法
- 转:poj 1664 放苹果 将m个相同的苹果放进n个相同的盘子中,盘子允许空,有多少种方法
- 将n个字符串中相同的字符串删除
- n个球放入m个盒子的方法
- 生成互不相同的N个随机数
- RFID系统组成及其功能
- MyBatis学习 之 四、MyBatis配置文件
- rfid与物联网关系
- 计算机端口
- Python装饰器与面向切面编程
- 将m个相同的球全部放到n个相同的盒子里面有几种放法
- 6.4 声明式事务
- Java并发编程:深入剖析ThreadLocal
- 《JAVA与模式》之适配器模式
- Java工具类收集
- eclipse 开发 android app:android.support.v7.app.ActionBarActivity 报错
- zookeeper环境的搭建
- UVa 11971 - Polygon(概率)
- DistributedCache介绍及应用