问题一

问题描述:把m个同样的苹果放在n个同样的盘子里,允许有的盘子空着不放,问有多少种不同的分法?(注:5,1,1和1,1,5是同一种分法)

解题分析:

设f(m,n)为m个苹果,n个盘子的放法数目,则先对n作讨论,

当n>m:则必定有n-m个盘子永远空着,去掉它们对摆放苹果方法数目不产生影响。即 if(n>m) f(m,n) = f(m,m)

当n <= m:不同的放法可以分成两类:含有0的方案数,不含有0的方案数

1、含有0的方案数,即有至少一个盘子空着,即相当于 f(m,n)=f(m,n-1);

2、不含有0的方案数,即所有的盘子都有苹果,相当于可以从每个盘子中拿掉一个苹果,不影响不同放法的数目,即 f(m,n)=f(m-n,n).而总的放苹果的放法数目等于两者的和,即 f(m,n)=f(m,n-1)+f(m-n,n)

递归出口条件说明:

当n=1时,所有苹果都必须放在一个盘子里,所以返回1;

当m==0(没有苹果可放)时,定义为1种放法;

递归

int fun(int m, int n) //m个苹果放在n个盘子中共有几种方法

{

if(m==0 || n==1)

return 1;

if(n>m)

return fun(m,m);

else

return fun(m,n-1)+fun(m-n,n);

}

动态规划

//放苹果

int main()

{

int apple, plate;

if(apple  10 || plate  10)

{

cout <

return -1;

}

vector > ivec(11, vector(11,0));

for(int i=0; i

{

ivec[0][i] = 1;

ivec[i][1] = 1;

}

for(int i = 1; i <= 10; ++i)

{

for(int j = 1; j <= 10; ++j)

{

if(j <= i)

ivec[i][j] = ivec[i][j-1] + ivec[i-j][j];

else

ivec[i][j] = ivec[i][j];

}

}

cout <

return 0;

}

问题二

问题描述:将整数N分成K个整数的和且每个数大于等于A小于等于B,求有多少种分法

int Dynamics(int n, int k, int min) //将n分为k个整数,最小的大于等于min,最大的不超过B

{

if(n

if(k == 1) return 1;

int sum = 0;

for(int t = min; t <= B; t++)

{

sum += Dynamics(n-t, k-1, t);

}

return sum;

}

问题三

m---->相同, n---->相同, 不能为空

将m个苹果放进n个盘子中,有多少种方法。同时注意例如1、2和2、1这两种方案是一种方案。

思路,先把每个盘子都放一个苹果,这样问题就转化为:m-n个苹果放进n个盘子里,盘子允许空,即问题1

java m个苹果n个篮子_m个苹果放入n个盘子问题相关推荐

  1. 递归算法《M个苹果放入N个盘子》

    题目: 把M个同样的苹果放在N个同样的盘子里,允许有的盘子空着不放,问共有多少种不同的分法?(用K表示)5,1,1和1,5,1 是同一种分法. 输入 每个用例包含二个整数M和N.0<=m< ...

  2. 将m个苹果放入n个盘子的问题【转】

    来自:http://blog.csdn.net/qq675927952/article/details/6312255 问题1: m----->相同, n---> 相同,可为空 将m个苹果 ...

  3. m个苹果放入n个盘子问题

    题目: 把M个同样的苹果放在N个同样的盘子里,允许有的盘子空着不放,问共有多少种不同的分法?(用K表示)5,1,1和1,5,1 是同一种分法. 输入 每个用例包含二个整数M和N.0<=m< ...

  4. POJ 1664 求m个苹果放入n个盘子的不同放法数目 递归 分类讨论

    通过分类讨论,将规模较大的问题转换成规模较小的相同问题,学会"降维",将索引值不断降小,就可以递归求解 设f(m,n)为把m个苹果放到n个盘子中的方法数,m>=0,n> ...

  5. m个苹果放入n个盘子

    题目描述 放苹果问题:把M个同样的苹果放在N个同样的盘子里,允许有的盘子空着不放,问共有多少种不同的分法? (注:5,1,1和1,1,5是同一种分法) 解题分析: 设f(m,n) 为m个苹果,n个盘子 ...

  6. java 将数据库中的每一条数据取出放入数组或者List中

    1.如何将数据库中数据按照行(即一整条数据)取出来,存入到数组当中? public static String str = null; // 将StringBuffer转化成字符串public sta ...

  7. java怎么把数据传入数组_怎么把数据放入数组中

    1.如何将数据库中所有数据存入数组 放到数组我不知道为什么这么做,你数据库的类型都是一样吗?要是整型和字符串你可以放一个数组里? 你可以用结果集取出来放到list集合里 反正放到一个容器里就可以了,最 ...

  8. JAVA通过poi实现excel表格制作并且将图片放入到指定的单元格中(可以循环插入)

    废话不多说,直接上代码,上效果图 @RestController @Api(tags = "报表") @RequestMapping("/export") @C ...

  9. java 多表联合查询后的结果的结果放入list里 如何拿出来_java如何将多个查询出来的list集合的结果合并为一个list集合。...

    不知道是不是你的意思 public class testlist { private static ArrayList list1 = new ArrayList();//表一 private sta ...

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

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

最新文章

  1. SylixOS ARP攻击解决办法
  2. eclipse设置java虚拟机内存大小
  3. 软考上午题难点5分钟攻克系列(十)
  4. 网络编程释疑之:单台服务器上的并发TCP连接数可以有多少
  5. 纪中A组模拟赛总结(2021.7.22)
  6. python 无法引入同级目录的方法_再见 virtualenv!K神教你轻松管理多个Python环境...
  7. PC端 java 开发蓝牙所遇到的问题
  8. Python 入门级1
  9. 新型智慧城市 相关网址
  10. ospf 指定dr_OSPF的基本配置及DR /BDR选举的实验
  11. AtCoder Grand Contest 025 B - RGB Coloring
  12. 个人简历小程序(附源码)
  13. 王阳明心学的最高境界
  14. 【自然语言处理】【多模态】Product1M:基于跨模态预训练的弱监督实例级产品检索
  15. 全向移动小车运动控制_如何让机器人进行全向移动
  16. 如何评小学计算机课,小学信息技术优质课评选听课心得体会
  17. linux内核配置cpu相关,Linux内核配置
  18. 三菱FX5U位逻辑指令
  19. 计算广告——读书笔记(二)
  20. 海关数据有没有效果?

热门文章

  1. 牛客 送分啦-QAQ
  2. pyautogui在网页内写入excel文件内容
  3. linux系统读移动硬盘,在linux系统上识别与挂载移动硬盘数据
  4. ASEMI快恢复二极管SFF806A的压降是多少
  5. 【操作系统】存储模型(二):虚拟存储技术和置换算法
  6. IBM POWER 710(小型机) 登录AMSI
  7. 万能开头结尾(申论)
  8. springboot+SSM Demo框架搭建
  9. 下拉框 切换一个下拉框 另一个下拉框做相应的改变
  10. 双色球网页历史数据爬取