数据结构 线性表(三) 放苹果

数据结构(三)

学习数据结构与算法过程中的心得体会以及知识点的整理,方便我自己查找,也希望可以和大家一起交流。

—— 放苹果 ——

1.题目描述

把M个同样的苹果放在N个同样的盘子里,允许有的盘子空着不放,问共有多少种不同的分法?(用K表示)5,1,1和1,5,1 是同一种分法。

1.1输入

第一行是测试数据的数目t(0 <= t <= 20)。以下每行均包含二个整数M和N,以空格分开。1<=M,N<=10。

1.2输出

对输入的每组数据M和N,用一行输出相应的K。

1.3样例输入与输出

样例输入
1 7 3
样例输出
8

2.代码实现

c

#include <stdio.h>

int methon(int apple,int plate){
    //如果没有苹果或者只有一个盘子,那么就只有一种方法。
    if(apple==0||plate==1)
        return 1;
    //如果苹果数量比盘子少,那么就相当于有苹果数量的盘子
    if(apple<plate)
        return methon(apple,apple);
    //如果苹果数量比盘子多,那么在每个盘子里拿走一个苹果并不会对结果造成影响
    else
        return methon(apple,plate-1)+methon(apple-plate,plate);
}
int main()
{
    int num;
    scanf("%d",&num);
    for(int i=0;i<num;i++)
    {
        int apple,plate;//m个苹果 n个盘子
        scanf("%d%d",&apple,&plate);
        printf("%d\n",methon(apple,plate));
    }
    return 0;
}

3.代码说明

首先我们解析问题,有apple个苹果要放入plate个盘子中,首先我们来分情况讨论:
1.==当apple < plate的时候==,我们不难发现,这个时候一定有盘子是空的,而且根据题目的描述,相同数量不同顺序算作一种,所以我们即使把这个空的盘子去掉也不影响结果。目的是将其转化为第2种状态。
即(apple=x,plate=y)=(apple=x,plate=x
例如:3个苹果放入==5==个盘子里的放置方法和3个苹果放入==4==个盘子的结果是一样的,因为根据题意(0,0,0,1,2)和(0,0,1,0,2)算作同一个情况,所以(0,0,0,1,2)和(0,0,1,2)是相同的。同理,3个苹果放入==5==个盘子里的放置方法和3个苹果放入==3==个盘子的结果是一样的。
2.==当apple >= plate的时候==,这种时候我们又要分情况讨论:
2.1当有盘子中放0个苹果的时候,根据上面的道理,去掉一个放0个的盘子对结果没有影响。
即(apple=x,plate=y)=(apple=x,plate=y-1
2.2 当盘子中都放有苹果时,我们即使在每个盘子中拿走一个苹果也不影响结果,目的是让其不断递归到2.1或者1的状态。
即(apple=x,plate=y)=(apple=x-y,plate=y

而最后的结果就是2.1和2.2的值相加,
即(apple=x,plate=y)=(apple=x-y,plate=y)+(apple=x,plate=y-1

将上述方法运用递归即可轻易实现,当然也可以使用动态规划,不过应该需要使用道二维数组,运算与循环步骤相对麻烦。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 在C语言中,五种基本数据类型存储空间长度的排列顺序是: A)char B)char=int<=float C)ch...
    夏天再来阅读 8,761评论 0 2
  • SwiftDay011.MySwiftimport UIKitprintln("Hello Swift!")var...
    smile丽语阅读 9,243评论 0 6
  • 信号量及PV操作 信号量机制是一种功能较强的机制,可用来解决互斥与同步问题,它只能被两个标准的原语wait(S)和...
    柳亮亮阅读 4,379评论 2 0
  • thiele插值算法 1点插值算法 function [C,c]=thiele(X,Y,Z)%X为插值点横坐标,Y...
    00crazy00阅读 6,246评论 0 4
  • 前言 在前面第一篇已经介绍了怎样创建一个用Word制作的博客首页。链接 这篇进一步完善我们的博客体系,阅读完此篇基...
    WZKong阅读 5,407评论 0 4