递归:
fun(m, n)表示m个苹果,放在n个盘子上有多少种方法,则n<=m时,
(1)至少有一个盘子上没有放苹果,即为fun(m, n-1);
(2)所有盘子都有苹果,然后从每个盘子上拿走一个苹果,即为fun(m-n, n)
故fun(m, n) = fun(m, n-1) + fun(m-n, n)
import java.util.Scanner;
public class Main{
static int fun(int m, int n){
if(m == 0|| n == 1)
return 1;
if(m < n)
return fun(m, m);
else
return fun(m, n-1)+fun(m-n, n);
}
public static void main(String args[]) {
Scanner in = new Scanner(System.in);
int t = in.nextInt();
while(t > 0){
int m, n;
m = in.nextInt();
n = in.nextInt();
int ans = fun(m, n);
System.out.println(ans);
t--;
}
}
}