ACM题目:孔融分梨

来源:互联网 发布:编程证书学历 编辑:程序博客网 时间:2024/06/08 09:51

 /*                             孔融分梨

    孔融让梨,人人称颂;孔融分梨,也不简单。孔融有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) );//递归调用求所有分法的和 }


 

原创粉丝点击