• 12-分苹果(递归)


    Description

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

    Input

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

    Output

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

    Sample Input

    1
    7 3
    

    Sample Output

    8
    #include <iostream>
    using namespace std;

    int f(int n, int m){
        if(n < m)           //苹果少于盘子时,相当余,将多的盘子放一边不管,反正用不上,
            return f(n, n);        //相当于将n个苹果放到n个盘子中随意放有多少种
        if(n == 0)
            return 1;       //没有苹果就都空,所以一种
        if(m == 0)
            return 0;      //有苹果无盘子放,方法放,
        return f(n, m-1) + f(n-m, m); //前一半是保证至少有一个空(先空一个,然后去放入m-1个盘子),
                                      //后一半是保证都非空,先一个盘子放一个(肯定非空了),再去将生的n-m个苹果放在任意盘子上
    }

    int main(){
        int n, m, c;
        cin >> c;
        while(c--){    
            cin >> n >> m;
            cout << f(n, m) << endl;
        }
        return 0;
    }
  • 相关阅读:
    C# 多线程Thread.IsBackground=True的作用
    JS 判断用户设备 移动端或桌面端
    VSCode 代码格式化 快捷键
    PHP 根据 IP 获取定位数据
    C# 将文本写入到文件
    C# 读取文件内容
    PHP 美化输出数组
    VSCode 设置 Tab 空格
    custom post types 404 Page Error
    [已解决] wordpress 修改 permalink 后 页面 404 问题
  • 原文地址:https://www.cnblogs.com/zhumengdexiaobai/p/7347626.html
Copyright © 2020-2023  润新知