第十二届蓝桥杯 ——整数分解_六级不考550+不改名-CSDN博客https://blog.csdn.net/weixin_46239370/article/details/116566616
#include<iostream>
using namespace std;
typedef long long ll;
ll f[10][3000];
ll dfs(int k, int n)
{
if (f[k][n] != -1) return f[k][n];//剪枝
if (k == 1) {
if (n == 0)
return 0;
else
return 1;
}
f[k][n] = 0;
for (int i = 1; i <= n; i++) {
f[k][n] += dfs(k - 1, n - i); //这不是dp嘛wc dp加递归 牛~!
}
return f[k][n];
}
int main()
{
memset(f, -1, sizeof f);//
cout << dfs(5, 2021) << endl;
return 0;
}