c语言函数孔融分梨,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 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) );//递归调用求所有分法的和

}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值