思路: 从1开始枚举,如果sum到0了,同时枚举的层数如果到k了,就把res++,然后输出res 刚刚接触dfs,感觉还是有点难的
using namespace std;
int n, k;
int res;
void dfs(int sum, int u,int cnt)
{
if (cnt == k)
{
if (!sum) res++;
return;
}
for (int i = u; i <= sum; i++)
{
dfs(sum - i, i,cnt+1);
}
}
int main()
{
cin >> n >> k;
dfs(n,1,0);
cout << res << endl;
return 0;
}