0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

C语言中苹果装盘问题解答

C语言编程学习基地 来源:C语言编程学习基地 作者:C语言编程学习基地 2021-11-17 09:57 次阅读

一、问题提出

问题:把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种放法;

三、程序设计

#include 
#include 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);    }    else        printf("苹果或盘子个数应小于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语言
    +关注

    关注

    180

    文章

    7537

    浏览量

    130160
  • 编程
    +关注

    关注

    88

    文章

    3443

    浏览量

    92529

原文标题:C语言习题:苹果装盘问题!用递归如何求解?

文章出处:【微信号:cyuyanxuexi,微信公众号:C语言编程学习基地】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    低压模拟开关/多路选通器常见问题解答

    电子发烧友网站提供《低压模拟开关/多路选通器常见问题解答.pdf》资料免费下载
    发表于 11-28 11:27 0次下载
    低压模拟开关/多路选通器常见<b class='flag-5'>问题解答</b>

    MEMS加速度传感器常见问题解答

    电子发烧友网站提供《MEMS加速度传感器常见问题解答.pdf》资料免费下载
    发表于 11-24 16:06 1次下载
    MEMS加速度传感器常见<b class='flag-5'>问题解答</b>

    CLOCK常见问题解答

    电子发烧友网站提供《CLOCK常见问题解答.pdf》资料免费下载
    发表于 11-23 10:23 0次下载
    CLOCK常见<b class='flag-5'>问题解答</b>

    隔离、iCoupler技术和iCoupler产品常见问题解答

    电子发烧友网站提供《隔离、iCoupler技术和iCoupler产品常见问题解答.pdf》资料免费下载
    发表于 11-22 10:36 0次下载
    隔离、iCoupler技术和iCoupler产品常见<b class='flag-5'>问题解答</b>

    C语言中ASCII代码是什么意思?

    C语言中ASCII代码是什么意思常见的ASCII代码都需要记吗
    发表于 10-25 07:10

    博科DCX 8510主干网常见问题解答

    电子发烧友网站提供《博科DCX 8510主干网常见问题解答.pdf》资料免费下载
    发表于 08-30 11:20 0次下载
    博科DCX 8510主干网常见<b class='flag-5'>问题解答</b>

    Brocade G610/G620/G630交换机常见问题解答

    电子发烧友网站提供《Brocade G610/G620/G630交换机常见问题解答.pdf》资料免费下载
    发表于 08-29 15:08 0次下载
    Brocade G610/G620/G630交换机常见<b class='flag-5'>问题解答</b>

    大规模集成电路MegaRAID FastPath软件常见问题解答

    电子发烧友网站提供《大规模集成电路MegaRAID FastPath软件常见问题解答.pdf》资料免费下载
    发表于 08-23 09:41 0次下载
    大规模集成电路MegaRAID FastPath软件常见<b class='flag-5'>问题解答</b>

    大规模集成电路MegaRAID SafeStore软件常见问题解答

    电子发烧友网站提供《大规模集成电路MegaRAID SafeStore软件常见问题解答.pdf》资料免费下载
    发表于 08-22 14:40 0次下载
    大规模集成电路MegaRAID SafeStore软件常见<b class='flag-5'>问题解答</b>

    PN7160常见问题解答

    电子发烧友网站提供《PN7160常见问题解答.pdf》资料免费下载
    发表于 08-17 14:23 1次下载
    PN7160常见<b class='flag-5'>问题解答</b>

    Arm SystemReady和SystemReady预硅启用的常见问题解答

    本指南提供了有关Arm SystemReady计划和SystemReady预硅启用的常见问题的答案。 信息分为以下几个部分: •SystemReady一般常见问题解答回答了有关SystemReady
    发表于 08-08 06:21

    EMC工程问题解答(八)

    赛盛技术从成立至今收到不少企业和学员关于电磁兼容问题咨询与交流,其中金牌线上课程《EMC实战特训营》收到学员2000+个的提问,赛盛专家团队给予的相关问题回复。以下是整理部分EMC问题解答,供大家
    的头像 发表于 08-05 08:20 438次阅读
    EMC工程<b class='flag-5'>问题解答</b>(八)

    PI7C9X130 PCI快速转PCI可逆网桥常见问题解答

    电子发烧友网站提供《PI7C9X130 PCI快速转PCI可逆网桥常见问题解答.pdf》资料免费下载
    发表于 07-26 15:56 1次下载
    PI7C9X130 PCI快速转PCI可逆网桥常见<b class='flag-5'>问题解答</b>

    PI7C9X110 PCI快速转PCI可逆网桥常见问题解答

    电子发烧友网站提供《PI7C9X110 PCI快速转PCI可逆网桥常见问题解答.pdf》资料免费下载
    发表于 07-25 18:25 1次下载
    PI7C9X110 PCI快速转PCI可逆网桥常见<b class='flag-5'>问题解答</b>

    PI7C9X111 PCI Express到PCI可逆网桥常见问题解答

    电子发烧友网站提供《PI7C9X111 PCI Express到PCI可逆网桥常见问题解答.pdf》资料免费下载
    发表于 07-25 18:24 0次下载
    PI7C9X111 PCI Express到PCI可逆网桥常见<b class='flag-5'>问题解答</b>