题目描述

放苹果问题:把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:不同的放法可以分成两类:

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

2、所有盘子都有苹果,相当于可以从每个盘子中拿掉一个苹果,不影响不同放法的数目,即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)  //因为我们总是让m>=n来求解的,所以m-n>=0,所以让m=0时候结束,如果改为m=1,return 1;    //则可能出现m-n=0的情况从而不能得到正确解    if(n>m)return fun(m,m);elsereturn fun(m,n-1)+fun(m-n,n);
}

动态规划

//放苹果
int main() {int apple, plate;cin >> apple >> plate;if (apple < 0 || apple > 10 || plate < 1 || plate > 10) {cout << -1 << endl;return -1;}vector<vector<int> > ivec(11, vector<int>(11, 0));for (int i = 0; i < 11; 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];elseivec[i][j] = ivec[i][i];}}cout << ivec[apple][plate] << endl;return 0;
}

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. 桌上有一只盘子,每次只能放入一个水果。请用Wait()、Signal()原语实现爸爸、儿子、女儿三个并发进程的同步。

    1.桌上有一只盘子,每次只能放入一个水果.爸爸专向盘中放苹果,妈妈专向盘中放桔子,一个女儿专等吃盘中的苹果,一个儿子专等吃盘中的桔子.试用P,V操作写出他们(4个并发进程)能同步的程序. semaph ...

  6. [ACM] POJ 1664 放苹果(n个相同小球放入m个相同盒子)

    放苹果 Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 25952   Accepted: 16509 Description ...

  7. 163邮箱苹果设置不成功_怎么样才能让自己服务器发出的邮件不被 Gmail、Hotmail、163、QQ 等邮箱放入垃圾箱...

    链接:https://www.zhihu.com/question/19574247/answer/16747342 来源:胡逸 著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. ...

  8. html文件设置成mac桌面,Mac软件教程:让你的Mac桌面放入无限多的文件

    对于那些喜欢将各种文件放在桌面的 Mac 用户,比如PC6小编,每天都会在上面存放各种文档,图片等一些文件,不管屏幕有多大,很快就会堆积大量的文件在桌面上,可是又懒得或没时间去规整他们,那该怎么办? ...

  9. 记录 vue项目打包放入 hbuilder 做app真机测试时 无法请求后台服务接口

    1.因为发布app时 vue开发模式下配置的跨域是无效的,打包后会找不到接口 例如下面是之前的错误版: '/propertyCmsAPI': {target: 'http://192.168.1.11 ...

最新文章

  1. codeforces 374A Inna and Pink Pony 解题报告
  2. 解决kubectl get pods时 No resources found.问题
  3. php 7.1/7.3使用 json_encode 函数造成浮点类型数据出现精度问题
  4. webstorm设置文件类型
  5. SharePoint 2013 - System Features
  6. SynchronizationContext
  7. 第1步 新建spring+springmvc+mybatis项目 每步都有 讲解 巨详细
  8. 在python中查看关键字、需要执行,如何在一个文本文件,二进制执行搜索来搜索一个Python关键字?...
  9. ubuntu linux安装ftp,Ubuntu16.04安装vsftpd教程,Linux系统FTP安装
  10. win7 x64从IE10升级IE11失败
  11. wow修改人物模型_跪求WOW改人物模型和装备模型的工具
  12. uni-app使用i18n实现国际化/多语言配置
  13. python写的串口助手_Python实现的简单的单片机串口助手程序
  14. 2020年《财富》世界500强排行榜揭晓
  15. 工作室SWS自动化脚本
  16. java.lang.RuntimeException: java.lang.NoSuchMethodException: com.xxx.analy
  17. 如何面对工作中的困难和纠结
  18. ubuntu时间自动同步服务器,Ubuntu从NTP服务器同步时间
  19. ACM数论 裴蜀定理(贝祖定理)
  20. Vue联动下拉框默认选中

热门文章

  1. data参数 layui_layui upload 额外参数上传
  2. Java 中的 Clone()
  3. SK-learn实现k近邻算法【准确率随k值的变化】-------莺尾花种类预测
  4. 使用C++实现FC红白机模拟器 Cartridge 与 Mapper(原理篇)
  5. 程序员最爱说的十句口头禅。。 | 今日最佳
  6. Java 自定义按时间先后顺序排序集合
  7. 多实践、少扯淡,生死看淡,不服就干
  8. 【JZOJ】WZK打雪仗
  9. APIS(BOM)——Window对象、本地存储
  10. Qt--模拟按下按键(键盘)