一、问题提出
问题:把m个苹果放入n个盘子中,允许有的盘子为空,共有多少种方法?
注:
5,1,1和1 5 1属同一种方法
m,n均小于10
二、算法分析
设f(m,n) 为m个苹果,n个盘子的放法数目,则先对n作讨论,
当n>m:必定有n-m个盘子永远空着,去掉它们对摆放苹果方法数目不产生影响。即if(n>m) f(m,n) = f(m,m)
当n<=m:不同的放法可以分成两类:
有至少一个盘子空着,即相当于f(m,n) = f(m,n-1);
所有盘子都有苹果,相当于可以从每个盘子中拿掉一个苹果,不影响不同放法的数目,即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 appledivide(m,n);int main(){int m,n;printf("请输入苹果和盘子个数(均小于10): ");scanf("%d%d",&m,&n);if(m<10&&n<10){int result = appledivide(m,n);printf("将%d苹果,放入%d个盘子,共有%d中方法",m,n,result);}elseprintf("苹果或盘子个数应小于10");return 0;}int appledivide(m,n){ // 如果碟子只有1个,无论苹果有多少个都只有一种放法if(m==0||n==1){return 1;}//如果碟子的个数大于苹果的个数if(n>m){return appledivide(m,m);}else{return appledivide(m,n-1) + appledivide(m-n,n);}}
责任编辑:haq
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。
举报投诉
-
C语言
+关注
关注
183文章
7646浏览量
146146 -
编程
+关注
关注
90文章
3723浏览量
97434
原文标题:C语言习题:苹果装盘问题!用递归如何求解?
文章出处:【微信号:cyuyanxuexi,微信公众号:C语言编程学习基地】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
相关推荐
热点推荐
晶科能源Tiger Neo 3.0的问题解答(10)
近期,晶科飞虎3(Tiger Neo 3.0)组件在直播和后台留言中频频被提到组件“弱光”相关的提问,因此,小编整理了大家最为关心的问题解答,同时,相关问题也同步在了官网上,方便大家查阅。
示波器常见问题解答 (FAQ)
示波器是电子工程师不可或缺的“眼睛”,它能将看不见的电信号转化为可视的波形图像,帮助我们洞察电路的运行状态。为了帮助您更高效、安全地使用这一工具,我们整理了以下常见问题与解答。 1.
Typedef在C语言中的应用
Typedef 在C语言中频繁用以声明一个已经存在的数据类型的同义字。也可以用预处理器做类似的事。例如,思考一下下面的例子:
#define dPS struct s *
typedef
发表于 12-22 13:53
晶科能源Tiger Neo 3.0的问题解答(1)
自晶科Tiger Neo 3.0 产品AI助手上线以来,后台咨询量飙升!看来大家对我们的旗舰产品——Tiger Neo 3.0 充满了好奇与期待。我们认真梳理了大家问得最频繁、最热门的问题,进行解答
汽车喇叭气密性检测仪常见问题解答
在汽车生产和检测环节,汽车喇叭气密性检测仪起着至关重要的作用。以下是一些关于它的常见问题解答。(1)检测仪的精度受哪些因素影响?检测仪的精度主要受环境因素、仪器本身的稳定性以及被测喇叭的特性
变频器与传动使用的常见问题解答
变频器与传动系统作为工业自动化领域的核心设备,其稳定运行直接影响生产效率和设备寿命。以下是针对实际应用中高频问题的系统性解答,结合技术原理与现场经验,为从业者提供实用参考。 一、电机过热问题解析 某
C语言中苹果装盘问题解答
评论