zoukankan      html  css  js  c++  java
  • 【递归】放苹果

    【递归】放苹果

    题目描述

    楚继光刚把油拿到厨房,老妈又大声喊道:“快去把苹果洗了放到盘子里去。”

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

    输入

    第1行为一个整数,表示测试数据的数目(测试数据的数目t(0 ≤ t ≤20),第2行为M和N(M和N,以空格分开。1≤M,N≤10)。

    输出

    输出有多少种不同分法。

    样例输入

    1
    7 3
    

    样例输出

    8
    分析:球盒问题的一种;
    若当前用了K个盘子,则在K个盘子中各放一个苹果;否则转化为K-1个盘子的问题;
    #include <iostream>
    #include <cstdio>
    #include <cstdlib>
    #include <cmath>
    #include <algorithm>
    #include <climits>
    #include <cstring>
    #include <string>
    #include <set>
    #include <map>
    #include <queue>
    #include <stack>
    #include <vector>
    #include <list>
    #define rep(i,m,n) for(i=m;i<=n;i++)
    #define rsp(it,s) for(set<int>::iterator it=s.begin();it!=s.end();it++)
    #define mod 1000000007
    #define inf 0x3f3f3f3f
    #define vi vector<int>
    #define pb push_back
    #define mp make_pair
    #define fi first
    #define se second
    #define ll long long
    #define pi acos(-1.0)
    const int maxn=1e6+10;
    const int dis[][2]={0,1,-1,0,0,-1,1,0};
    using namespace std;
    ll gcd(ll p,ll q){return q==0?p:gcd(q,p%q);}
    ll qpow(ll p,ll q){ll f=1;while(q){if(q&1)f=f*p%mod;p=p*p%mod;q>>=1;}return f;}
    ll dfs(int a,int p)
    {
        if(a<=1||p<=1)return 1;
        else if(a<p)return dfs(a,a);
        else return dfs(a-p,p)+dfs(a,p-1);
    }
    int main()
    {
        int i,j,m,n,k,t;
        scanf("%d",&t);
        while(t--)
        {
            scanf("%d%d",&m,&n);
            printf("%lld
    ",dfs(m,n));
        }
        //system("pause");
        return 0;
    }
     
  • 相关阅读:
    tuple 元组及字典dict
    day 49 css属性补充浮动 属性定位 抽屉作业
    day48 选择器(基本、层级 、属性) css属性
    day47 列表 表单 css初识
    day 46 http和html
    day 45索引
    day 44 练习题讲解 多表查询
    day 40 多表查询 子查询
    day39 表之间的关联关系、 补充 表操作总结 where 、group by、
    day38 数据类型 约束条件
  • 原文地址:https://www.cnblogs.com/dyzll/p/5645486.html
Copyright © 2011-2022 走看看