应用的方法是搜索剪枝
#include<cstdio>
#include<cmath>
#include<algorithm>
#include<iostream>
#include<cstring>
#include<cstdlib>
using namespace std;
int n,k,ans,a[10];
void search(int t)
{
if(n==0) return;
if(t==k&&n>=a[t-1])
{
ans++;
return;
}
for(int i=a[t-1];i<=n/(k-t+1);i++)
{
n-=i;
a[t]=i;
search(t+1);
n+=i;
}
}
int main()
{
cin>>n>>k;
ans=0;
a[0]=1;
search(1);
cout<<ans;
}