题解
2023-03-17 16:42:01
发布于:上海
40阅读
0回复
0点赞
#include <iostream>
#include <queue>
using namespace std;
int cnt;
int n,k;
void DFS2(int si,int sum,int step)
{
if(stepk) //基线
{
if(sumn)
cnt++;
else
return;
}
else
{
for(int j=si;j<=(n-sum+1)/(k-step);j++) //优化循环,不然超时
{
if(sum+j<=n&&si<=j)
{
DFS2(j,sum+j,step+1);
}
}
}
return;
}
int main()
{
cin >>n >>k;
DFS2(1,0,0); //第一个数从一开始搜索
cout <<cnt;
return 0;
}
这里空空如也
有帮助,赞一个