经典问题,m个苹果分n个盘子方案
听不懂y总从集合的方面分析,参考的是大佬@白線流つ 的题解点击这
$ 时间复杂度O(NM),空间复杂度O(NM) $
参考文献
AC代码
#include <iostream>
using namespace std;
int T, n , m;
int f(int m, int n){
if (m == 0) return 1;//0个苹果,所有盘子都分0
if (n == 0) return 0;//0个盘子
if (n > m){//盘子比苹果多,每个盘子至多分一个,
return f(m ,m);
}
//一般情况
return f(m, n - 1) + f(m - n, n);
}
int main(){
cin >> T;
while (T --){
cin >> m >> n;
int res = f(m, n);
cout << res << endl;
}
return 0;
}