问题描述:m个苹果放置在n个盘子中,允许有的盘子为空,共多少种放法?  【注】1、如5,1,1和1,5,1 属于同一种放法   2、m,n均小于10

【示例】 m=7 n=3  有8种放法

【思想】 0、当n=1时,所有苹果都必须放在一个盘子里,所以返回1;当m==0(没有苹果可放)时,定义为1种放法; 【递归出口】

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

2、当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)

【代码示例】

1 #include

2 int fun(int m, int n) { //m个苹果放在n个盘子中共有几种方法(如 m=7 n=3 )

3 if(m==0 || n==1) //如果有0个苹果(m==0),定义为1种放法 或 只有1个盘子(即 n==1),无论如何只有1种放法

4 return 1;5 if(n>m) //当n>m(盘子数>苹果数):则必定有n-m个盘子永远空着(即每个盘子只放1个,占最多的盘子共m个,剩下n-m个),

6 return fun(m,m); //去掉它们对摆放苹果方法数目不产生影响。即 if(n>m) f(m,n) = f(m,m)

7 else

8 return fun(m,n-1)+fun(m-n,n); //当n <= m:不同的放法可以分成两类:含有0的方案数,不含有0的方案数

9 /*1、含有0的方案数【去盘子】:即有至少一个盘子空着,去掉这个盘子,不影响总结果 即 f(m,n)=f(m,n-1)10 2、不含有0的方案数【去苹果】:即所有的盘子都有苹果,若从每个盘子中拿掉一个苹果,不影响总结果,即 f(m,n)=f(m-n,n)11 */

12 }13

14 intmain(){15 int m,n;//m个苹果 n个盘子

16 printf("input m,n:");17 scanf("%d%d",&m,&n);18 if( (m>=0&&m<10) && (n>0&&n<10) ){19 printf("count= %d",fun(m,n));20 }else{21 printf("你输入的数字不符合要求,请重新输入!");22 }23

24 return 0;25 }

【结果示例】

用python解决放苹果问题_[18/11/24] 递归解决-放置苹果问题相关推荐

  1. java break递归_如何利用Java递归解决“九连环”公式

    在之前有写到过一点点有关递归的东西,然后想到小时候自己玩的一个玩具--九连环.小时候自己曾经一边玩一边用笔记下来解开这个东西的公式,那是十几年前的事情了.前两天突然想起来,九连环的基本操作就是一个递归 ...

  2. python棋盘放米问题_棋盘堆米的难题怎么解决?

    原标题:棋盘堆米的难题怎么解决? 国外有个故事,一个人和国王打赌.如果国王输了就给他米.但是他要的你看上去很少,实则算起来确实非常多,甚至一个国家的米都不够.国王为了用人信守承诺.国王为了应向所有人显 ...

  3. python解析pdf中文乱码_解析PDF文件以及解决编码问题

    1.解析pdf文件 最近需要将pdf中文本提取出来,于是就了解了一下pdfminer 首先安装:pip3 install pdfminer3k 之后就是用pdfminer解析,不多说,直接上代码,这些 ...

  4. python动态库反初始化_【TensorFlow】:解决TensorFlow的ImportError: DLL load failed: 动态链接库(DLL)初始化例程失败...

    [背景] 在scikit-learn基础上系统结合数学和编程的角度学习了机器学习后(我的github:https://github.com/wwcom614/machine-learning),意犹未 ...

  5. python 串口读取地磅仪表_地磅串口数据读取解决办法

    地磅串口数据读取HT9800地磅通讯协议:串行通讯方式:连续发送称重值波特率:1200/2400/4800/9600可选数据格式:10位:1位起始位(0),8位数据位(D0-D7),1位结束位(1). ...

  6. python 程序化交易信号闪烁_请版主帮忙解决一下程序信号闪烁的问题-开拓者知识 -程序化交易(CXH99.COM)...

    咨询内容: Params Numeric notaft(14.58); Vars Numericseries High5(0);// Numericseries Low5(0);// Numeric ...

  7. 苹果笔记本包_通勤收纳新体验:tomtoc苹果电脑包

    作为上班族兼电脑控,我每天上下班都都背着笔记本,为了携带方面,最近入手了一台轻薄的MACBOOK AIR,一直在找一个合适的通勤包,毕竟普通的电脑包体积太大,背着就失去了便携的意义.我想着,这个通勤包 ...

  8. python链接mysql系统结构设计_第11章:使用Python打造MySQL专家系统

    1.Python语言高级特性 1).深入浅出Python生成器 1).生成器函数:与普通函数定义类似,使用yield语句而不是return语句返回结果.yield语句一次返回一个结果,在每个结果中间挂 ...

  9. python正则怎么取反_第11.19节 Python 中正则表达式的扩展功能:前视断言和前视取反...

    一.引言 在<第11.16节 Python正则元字符"()"(小括号)与组(group)匹配模式>中老猿介绍了组匹配模式的命名组功能及引用组功能,这两者都是组模式的扩展 ...

  10. 区块链技术用解决拜占庭将军问题_区块链是如何解决拜占庭将军问题的?

    原标题:区块链是如何解决拜占庭将军问题的? 区块链火爆后不少人认为它是继蒸汽机.电力.互联网之后第四代具有颠覆性的技术.但凡了解它,或者对比特币有一定见解的人,都多多少少听过拜占庭将军问题.现阶段区块 ...

最新文章

  1. JDK ShutdownHook - 优雅地停止服务
  2. 2018成都初二计算机会考时间,2018年四川学业水平考试时间及科目
  3. 竞赛奇葩队名,学编程的人都是隐藏的段子手 | 今日最佳
  4. java初学者笔记总结day6
  5. Struts2 ognl中的#、%和$符号用法说明
  6. 【记录】IDEA未正确关闭导致打开报错,进不了主界面,含解决办法
  7. element-UI中table表格的row-click事件怎么获取一行数据的id
  8. ASP.NET WebApi 路由配置【转】
  9. Java基础入门(八)之面向对象二
  10. html判断安装没安装qq,QQ提示安装路径无效您没有权限怎么办 QQ2015提示安装路径无效您没有权限的解决方法...
  11. 【老生谈算法】matlab实现传染病模型源码——传染病模型
  12. 光缆弹性模量计算_OPGW光缆及规格参数.doc
  13. HDLBits学习笔记——移位寄存器
  14. 雷军系好生意:小米,不是一家公司在战斗!
  15. 【VSCode教程】 C++第一个DLL、远离手动GCC、快速自动生成、来 say_helloヽ(^o^)丿
  16. MIT6.828 Part B: Copy-on-Write Fork
  17. Apache Hadoop大数据集群及相关生态组件安装
  18. android好用的NFC软件,5个有用的NFC应用程序为Android,以利于NFC | MOS86
  19. Crazy Number---3755
  20. 汇编指令与Intrinsics指令的对应关系汇总

热门文章

  1. AXI5 new feature: support atomic transaction
  2. linux 判断是否root权限,Android adb 判断是否有root权限
  3. 【游戏开发实战】Unity实现水果忍者切水果的刀痕效果教程(两种实现方式:TrailRenderer、LineRenderer)
  4. 脸上长了黄褐斑怎么办
  5. ubuntu 您不是所有者所以您不能更改
  6. IN适合于外表大而内表小的情况;EXISTS适合于外表小而内表大的情况。
  7. 基于Android studio智能快递柜存放取物系统java
  8. 轮子王-原创数据结构-V2.0--内存//二级指针//小样儿练习
  9. 机动车污染排放检验信息系统信息化建设目标及规范
  10. SSB基准测试-ClickHouse