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;

           }

    }

  • 相关阅读:
    java 基础 01 变量和注释、数据类型
    js虚拟数字小键盘
    好看的table样式
    Java8的lambda表达式和Stream API
    设计模式-模板
    【转】Git使用教程之基础篇
    Linux安装redis和部署
    【原】DjianGo Windows7下的安装
    【转】七牛云加速域名配置
    【原】Solr入门之概念和安装
  • 原文地址:https://www.cnblogs.com/csgc0131123/p/5290420.html
Copyright © 2011-2022 走看看