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;

           }

    }

  • 相关阅读:
    Linux内核架构读书笔记
    Linux内核container_of 宏
    Linux内核架构读书笔记
    Linux内核架构读书笔记
    Linux内核架构读书笔记
    Linux内核架构读书笔记- 2.4.1 进程复制
    作业07:字符串索引与切片
    作业06:数字类型
    作业04:逻辑运算
    作业05:用户登录(三次机会)且每次输入错误显示剩余次数
  • 原文地址:https://www.cnblogs.com/c1299401227/p/5370780.html
Copyright © 2011-2022 走看看