//隨手寫一點吧!递归思想,考虑有无盘子空出的情况,1.有盘子则按每次盘子数量少一的情况,2.如果没有盘子空出也就意味着每个盘子都会最少存在一个果子

//当没有苹果了,或者只有一个盘子的时候,那就只有一种方法了就return 1即可。

//注意当盘子数量大于苹果的数量的时候最多放与苹果一致的数量。

#include

#include

using namespace std;

//(新手上车)一些不对的地方多多指教!

int f(int m ,int n){

//f(n,m) = 有盘子 + 没有空盘子;

    if( m == 0 || n == 1){

        return 1;

    }

    if(m < n) f(m,m);

    else return f(m,n-1) + f(m - n,n);

}

int main()

{

    int t;

    cin >>t;

    while(t--){

        int n,m;

        cin >>m >>n;

        cout << f(m,n) <<endl;

    }

    return 0;

}


点赞(0)
 

0.0分

3 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 1 条评论