ACM题目:孔融分梨

 /*                             孔融分梨

    孔融让梨,人人称颂;孔融分梨,也不简单。孔融有M个同样的梨,要分给N个人。每

个人手上有一个同样的盘子,孔融要将梨放入盘中,允许有的盘子空着不放,问共有多少种

不同的分法?3,1,1和1,3,1和1,1,3是同一种分法。

    第一行是测试数据的数目t(0 <= t <= 20)。以下每行均包含二个整数M和N,以空格

分开。1<=M,N<=10。

    对输入的每组数据M和N,用一行输出相应的分法数目。


Sample Input:
1
7 3

Sample Output:
8
*/

#include <stdio.h>
int fun(int m,int n) ;
int main()
{
    int test;
    int m,n;
    scanf("%d",&test);
    while(test--)
      {
          scanf("%d%d",&m,&n);
          printf( "%d\n",fun(m,n) );
      }
    return 0;
}
int fun(int m,int n)
{
    if(m<0)   return 0;
    if(m==1)   return 1;//如果m==1,只有一种分法 
    if(n==1)   return 1;//如果n==1,只有一种分法 
    //fun(m-n,n)表示分出n个梨后,剩下的梨的分法
 //fun(m,n-1)表示m个梨分给n-1个人的分法 
    return  ( fun(m-n,n)+fun(m,n-1) );//递归调用求所有分法的和 
}


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值