using namespace std; void Split(int p, int q) { for (int n = 1; n <= p; n++) for (int k = 1; k <= q; k++) { if (n == 1 || k == 1) dp[n][k] = 1; else if (n < k) dp[n][k] = dp[n][n]; else if (n == k) dp[n][k] = 1 + dp[n][k -...
原理:整数n拆分成最多不超过m个数的和的拆分数,和n 拆分成最大不超过m的拆分数相等。 根据这个原理,原问题就转化成了求最大拆分为k的拆分个数与最大拆分为k-1的拆分个数的和 (或原问题就转化成了求正好拆分为k个数的拆分方案数与最大拆分为k-1的拆分个数的和) f(n,k)=f(n,k-1)+f(n-k,k)...