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;

           }

    }

  • 相关阅读:
    C#第八节课
    C#第七节课
    C#第六节课
    supervisor进程管理的使用
    oracle分区表
    Zabbix配置邮件监控
    python连接oracle数据库
    json内存级非关系数据库
    Oracle 12c CDB PDB 安装/配置/管理
    Let's Encrypt免费泛域名证书申请
  • 原文地址:https://www.cnblogs.com/csgc0131123/p/5290420.html
Copyright © 2011-2022 走看看