后两个点超时,求大佬剪枝
查看原帖
后两个点超时,求大佬剪枝
121495
coezff楼主2021/8/18 21:41
#include<iostream>
#include<cstdio>
#include<math.h>
#include<cctype>
#include<cstring>
#include <string>
#include<algorithm>
using namespace std;

int n,k,ans;

void dfs(int a,int he,int cnt)
{
    if(cnt==k&&he==n)
    {
        ++ans;
        return;
    }
    if(cnt>k||he>n) return;
    for(int i=a;i<=n-k+1;++i)
    {
        dfs(i,he+i,cnt+1);
    }
    return;
}

int main()
{
    scanf("%d%d",&n,&k);
    for(int i=1;i<=n-k+1;++i)
    {
        dfs(i,i,1);
    }
    printf("%d",ans);
    return 0;
}

2021/8/18 21:41
加载中...