rt,思路:将规模为(n,k)的问题转化为规模(n−i,k−1)的问题,其中i为组合的第一个数。当k=2时共有(n/2−i+1)种方案数.
代码:
#include<bits/stdc++.h>
using namespace std;
int n,k,ans;
void dfs(int m,int cnt,int ii)
{
if(cnt==2)
{ans+=m/2-ii+1;return;}
for(int i=1;i<=m/cnt;i++)
{
dfs(m-i,cnt-1,i);
}
return;
}
int main()
{
std::ios::sync_with_stdio(false);
cin>>n>>k;
dfs(n,k,1);
cout<<ans;
return 0;
}