解题思路:设置三个参数记录过程中可能使用的变量,然后dfs即可
C++代码
#include <bits/stdc++.h>
// #define int long long
using namespace std;
int n, k;
int ans;
//最小可选择数、剩余数、已选个数
void dfs(int st, int num, int cnt)
{
if (cnt == k)
{
if (num == 0) ans ++ ;
return ;
}
//优化了最大可选择数
for (int i = st; i <= num / (k - cnt); i ++ )
{
dfs(i, num - i, cnt + 1);
}
}
signed main()
{
cin >> n >> k;
dfs(1, n, 0);
cout << ans << endl;
return 0;
}