这是我最开始的代码
#include<stdio.h>
int K,cnt;
void dfs(int n,int k,int c)
{
if(k==K-1)
{
cnt++;
return;
}
int i;
for(i=c;i<=n/2;i++)
dfs(n-i,k+1,i);
}
int main()
{
int n;
scanf("%d%d",&n,&K);
dfs(n,0,1);
printf("%d",cnt);
}
提交结果
后来考虑到,果要把数字n拆k份,那最小的数字一定不能大于n/k,所以把n/2改成了n/(K-k),然而交上去后居然更慢了,最后一个点慢了7ms。提交结果
蒟蒻表示无法理解了,我的想法是K-k最小是2,所以第二种最差的情况才和第一种复杂度相同,不应该只优不劣吗,咋还变慢了呢?(世界观崩塌惹)