美文网首页
递归例题:放苹果

递归例题:放苹果

作者: 见习炼丹师 | 来源:发表于2017-11-02 21:12 被阅读0次
#include <iostream>

using namespace std;

int setapple(int m,int n){//m个苹果,n个盘子
    if(n==0){
        return 0;
    }
    if(m==0){
        return 1;
    }
    //必然会空的盘子就可以去掉
    if(n>m){
        return setapple(m,m);
    }
    else{
        //分为两种情况,一种是有盘子为空的放法,即第二个表达式,先空出一个盘子,把问题简单化
        //一种是没有盘子为空的放法,即第一个表达式,先把每个盘子先放一个再说
        return setapple(m-n,n)+setapple(m,n-1);
    }
}

int main()
{
    int t,m,n;
    cin>>t;
    while(t--){
        cin>>m>>n;
        cout<<setapple(m,n)<<endl;
    }
    return 0;
}

这里利用分类分别递归的思想,通过分析题目可知,不能通过先走一步,减少问题规模,而是直接分成几个大类,同时,注意规划好边界条件来终止递归。

相关文章

  • 递归例题:放苹果

    这里利用分类分别递归的思想,通过分析题目可知,不能通过先走一步,减少问题规模,而是直接分成几个大类,同时,注意规划...

  • 普及组Day2教案

    递归专题 P1157 组合的输出 Luogu P2386 放苹果

  • 递归例题:算24

    这道题相对复杂,是属于可以先走一步不断递归降低问题规模的类型,总体思想是不断地将两个数字通过枚举所有的四种运算方法...

  • 递归例题 N皇后 反思

  • LeetCode 回溯专题 4:组合问题 Combination

    再次体会分析递归结构的重要意义,画出树形图是关键。并且初步感知递归分支可以修建的情况。 例题:LeetCode 第...

  • 放苹果

    解析 参考牛客网解析: 难点:当苹果大于盘子时,(这是大前提,注意哦) 我们怎么确定有多少种放法. 此时我们考虑了...

  • 放苹果

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

  • 放苹果

    题目描述 把m个同样的苹果放在n个同样的盘子里,允许有的盘子空着不放,问共有多少种不同的分法?(用K表示)5,1,...

  • 简单机械杠杆作图

    例题 例题 答案 例题 答案 例题 答案 例题 答案 例题 例题 答案 例题 答案 例题 答案 例题 答案 例题 ...

  • 中考物理估测题总结

    例题 答案: 例题 答案 例题 答案 例题 答案 例题 答案 例题 答案 例题 答案 例题 答案 例题 答案 例题...

网友评论

      本文标题:递归例题:放苹果

      本文链接:https://www.haomeiwen.com/subject/tpiapxtx.html