P1025 [NOIP 2001 提高组] 数的划分 - 洛谷 (luogu.com.cn)
#include<iostream>
using namespace std;
int n, k;
int res = 0;
void dfs(int num,int step,int sum) {
//判断
if (sum == n) {
if (step == k) {
res++;
return;
}
}
if (sum > n || step == k)return;
//搜索
for (int i = num; i * (k - step) + sum <= n; i++) {
dfs(i, step + 1, sum + i);
}
}
int main() {
cin >> n >> k;
dfs(1, 0, 0);
cout << res;
return 0;
}