• 放苹果


    把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


        int t = 0,m,n;
        cin >> t;
        for (int i = 0; i < t; i++)
        {
            cin >> m >> n;
            cout << apple(n, m) << endl;
        }

    int apple(int n,int m)//n个盘子放m个苹果
    {
        if (m == 0 || n == 1)//没有苹果了,或只有一个盘子了,递归出口
            return 1;
        if (m < n)
            return apple(m, m);//苹果数小于盘子数,多于的盘子肯定为空
        else
            return apple(n, m - n) + apple(n - 1, m);
        /*分两种情况相加
        1.盘子都不为空,那么就至少有一个苹果,即每个盘子放一个
        转变为n个盘子放m-n个苹果的子问题
        2.让其中一个盘子不放
        */
    }
  • 相关阅读:
    SignalR + MVC5 简单示例
    SignalR 简单示例
    Web API 简单示例
    Windows Azure 使用体验
    SQL Server 2014 安装小记
    SSRS 迁移
    SSH配置(同一服务器不同用户)
    【6】Zookeeper脚本及API
    【3】Kafka安装及部署
    【2】Kafka概念及原理
  • 原文地址:https://www.cnblogs.com/lxzbky/p/10548961.html
Copyright © 2020-2023  润新知