百炼-1664-放苹果-C语言-递归算法入门

递归算法入门题,不过如果数字再大一点可能要考虑记忆化搜索了。

/**************************************************
**文件名:百炼-1664
**Copyright (c) 2015-2025 OrdinaryCrazy
**创建人:OrdinaryCrazy
**日期:20170806
**描述:百炼-1664参考答案
**版本:1.0
***************************************************/
#include <stdio.h>
/**************************************************
对于将m个苹果放入n个盘子
1,如果n>m那么必然有至少n-m个盘子是空的,分法数等于将m个苹果放入m个盘子时的情况
2,对于n<=m的情况,有两种分发:有盘子空着,没有盘子空着
f(m,n)=f(m-n,n)+f(m,n-1)
***************************************************/
/**************************************************
**函数名:slove
**输入:m-苹果数,n-盘子数
**输出:对应情况的分法数
**功能:计算对应情况的分法数
**作者:OrdinaryCrazy
**日期:20170806
**版本:1.0
***************************************************/
int solve(int m,int n)
{
    if(m == 0 || n == 1)
        return 1;
    if(n > m)
        return solve(m,m);
    return solve(m - n,n) + solve(m,n - 1);
}
int main()
{
    int t,m,n;
    scanf("%d",&t);
    while(t--)
    {
        scanf("%d%d",&m,&n);
        printf("%d\n",solve(m,n));
    }
    return 0;
}
    原文作者:递归算法
    原文地址: https://blog.csdn.net/ordinarycrazy/article/details/76794754
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞