DFS模拟:
#include<iostream>
using namespace std;
int n,k,road,sum=0;
int a[10];
void dfs(int step)
{
//if(n==0)return ;
//if(sum>n)return;
if(step==k)
{
if((n-sum)>=a[k-1]){
road++;
//具体的分配方法
/*
a[k]=n-sum;
for(int i=1;i<=k;i++)
cout << a[i] << " ";
cout << endl ;*/
}
return;
}
for(int i=a[step-1];i<=n/(k-step+1);i++)
{
a[step]=i;
sum+=i;
dfs(step+1);
sum-=i;
}
}
int main()
{
scanf("%d%d",&n,&k);
a[0]=1;
dfs(1);
cout << road << endl ;
return 0;
}