#include<iostream>
using namespace std;
int f(int n,int k)
{
int t=0;
if(n<0)
return 0;
if(n == 0||k == 1)
return 1;
if(n<k)
return f(n,n);
return f(n-k,k)+f(n,k-1);
}
int main()
{
int n,k;
cin >> n >>k;
cout <<f(n,k)<<endl;
system("pause");
return 0;
}
原理是分为有空盘和无控盘,采用递归方法。
f(n,m)=f(n-m,m)+f(n,m-1)