[NOIP2001]数的划分
#include <iostream>
using namespace std;
int n, k, cnt;
void dfs(int u, int s, int sum)//当前分成u份 上一个选择的数是s 当前总和是sum
{
if(u > k) //只要满足u>k的条件就应该进入当前判断,不论是否sum==n都应该return
{
if(sum == n) cnt ++;
return ;
}
for(int i = s; i <= n - sum; i ++)
dfs(u + 1, i, sum + i);
}
int main()
{
cin >> n >> k;
dfs(1, 1, 0);
cout << cnt ;
return 0;
}