zoukankan      html  css  js  c++  java
  • 《程序设计与算法(二)算法基础》《第二周 递归》放苹果 1664

    1664:放苹果

    总时间限制: 
    1000ms
     
    内存限制: 
    65536kB
    描述
    把M个同样的苹果放在N个同样的盘子里,允许有的盘子空着不放,问共有多少种不同的分法?(用K表示)5,1,1和1,5,1 是同一种分法。
    输入
    第一行是测试数据的数目t(0 <= t <= 20)。以下每行均包含二个整数M和N,以空格分开。1<=M,N<=10。
    输出
    对输入的每组数据M和N,用一行输出相应的K。
    样例输入
    1
    7 3
    
    样例输出
    8

    /*
    http://bailian.openjudge.cn/practice/1664/
    1664: 放苹果
    */
    #include<iostream>
    using namespace std;
    /*
    m   Apple
    n   Plate
    */
    int f(int m, int n)
    {
        if (m < n)
        {
            return f(m, m);
        }
        if (m == 0)  /*边界条件,必须能终止,能挡住*/
            return 1;
        // (n <= 0)
        if (n == 0) /*边界条件,必须能终止,能挡住  n<=0不是必须的*/
            return 0;
        return f(m, n - 1) + f(m - n, n);
        /*
        总放法 = 有盘子为空的放法 + 没盘子为空的放法
        f(m, n - 1) 先空一个盘子
        f(m - n, n)  先给n个盘子每个放一个苹果,这样就没有盘子为空,剩下的苹果随便放。
        */
    }
    
    int main()
    {
        int t, m, n;
        cin >> t;
        while (t--)
        {
            cin >> m >> n; /*每次输入苹果数 和 盘子数*/
            cout << f(m, n) << endl;
        }
        return 0;
    }
  • 相关阅读:
    sop服务治理
    调用链跟踪基本原理
    spring源码之bean的初始化及循环引用
    单调栈
    SpringBoot启动源码及自定义starter
    深入理解kafka
    Netty小结
    Oooooooooooooooooooooooooooooooooooooooooops, AN EMPTY AREA here.
    牛客OI周赛7-提高组 A 小睿睿的等式
    素数筛法求素数
  • 原文地址:https://www.cnblogs.com/focus-z/p/11470410.html
Copyright © 2011-2022 走看看