zoukankan      html  css  js  c++  java
  • 43.放苹果(递归练习)


    放苹果

    总时间限制: 

    1000ms

     

    内存限制: 

    65536kB

    描述

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

    输入

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

    输出

    对输入的每组数据MN,用一行输出相应的K

    样例输入

    
    1
    
    
    7 3
    

    样例输出

    
    8
    

    分析:

    这是“数的划分”那道题的变式,无非就是篮子可以为空不同而已,就加一个for循环就行了

    代码:

    #include

    using namespace std;

    int f(int,int,int);

    int t;

    #include

    int main()

    {

           scanf("%d",&t);

           for(int i=1;i<=t;++i)

           {

                  int m,n;

                  long long sum=0;

                  scanf("%d%d",&m,&n);

                  for(int j=1;j<=n;++j)

                  sum+=f(m,j,1);

                  printf("%lld ",sum);

           }

           return 0;

    }

    int f(int a,int b,int c)

    {

           int g=0;

           if(b==1) return 1;

           else{

                  for(int i=c;i<=a/b;++i)

                  g+=f(a-i,b-1,i);

                  return g;

           }

    }

  • 相关阅读:
    【IDEA】转大小写快速操作
    【WSDL】WebService描述语言的实践
    【WEB】URL文件
    【BatchProgram】工作用的小工具
    【Java】自制查找工具
    【DataBase】SQL优化问题
    【IDEA】DEBUG调试问题
    【DataBase】XueSQL Training
    【SVN】文件解锁
    【DataBase】SQL45 Training 45题训练
  • 原文地址:https://www.cnblogs.com/csgc0131123/p/5290420.html
Copyright © 2011-2022 走看看