主题内容:

把m个相同的苹果放在n个相同的盘子里,允许还有空的盘子,一共有几种不同的分法? m,n为自然数。 说明:如果有7个苹果,2个盘子,那么(5、1、1 )和(1、5、1 )和(1、1、5 )是相同的划分方法。 输入说明

第一行的一个整数表示数据的组数(多个组数据),各组数据的第一行是苹果的个数m(1m100 ),第二行是盘子的个数n(1n100 )。

输出说明

每组输出一行,放苹果的方法个数。

输入样品

1 3 2

输出样本2

/*思路1: 122 212 221相同,代表221123 .321相同,代表321成为“代表”的组合特点是前面的不比后面的小。 这是一个制约条件。 最好使用递归。 例如,把10个放在3个篮子里,“放第一个10个,放0个”,再把一个放在剩下的两个篮子里先放8,把两个放在剩下的两个篮子里先放7,把3个放在剩下的两个篮子里。 总之,如果放m个苹果、n个篮子、第一个放a个的话,a的范围就会从m减少到0,把(M-a )个苹果放在N-1个篮子里。 但是,放入时必须是”表示将前面n ) m个苹果放入n盘的f (10,3 )=f (10,2 ) f ) 7, 3 ) 10个苹果装3盘=10个苹果装2盘) )有空盘子,但不装一个) ) 7个苹果装3盘)没有空盘子,每个盘子里先放一个苹果,就只有苹果了if(nm )返回函数(m,m ); //如果前面小于后面,则一定有空盘子,如果有m个苹果进入m个盘子elsereturnfun(m,n-1 ) fun ) m-n,n )相同的//空盘子没有空盘子(} int mamat 扫描(‘ % d ‘,t ); wile(t– ) Scanf ) ‘ %d%d ),m,n ); printf(%d(n ),fun ) m,n ); }返回0; }