求助DFS
查看原帖
求助DFS
753280
10chen01楼主2024/7/1 22:02
#include<iostream>
#include<cstring>
#include<vector>
#include<algorithm>
#include<cstdlib>

using namespace std;

#define int long long

int n; int k;
vector<int> l;

int ans=0;

bool prime[100000005];

void init(){
    prime[0] = false;
    prime[1] = false;
    memset(prime, 0, sizeof prime);
    for(int i=2;i<=1000000;i++){
        if(!prime[i]){
            for(int j=i*i;j<=1000000;j+=i){
                prime[j]=true;
            }
        }
        prime[i] = !prime[i];
    }
}

int fact(int k){
    if(k == 0 || k == 1) return 1;
    else return k*fact(k-1);
}

void dfs(int deepth, int summerize, int beg) {
    if(deepth == k){
        if(prime[summerize]){
            ans ++;
        }
        return ;
    }
    for(int i=beg+1;i<n-(k-deepth);i++){
        dfs(deepth+1, summerize+l[i], i);
    }
}

signed main(){
    init();
    cin>>n>>k;
    for(int i=1;i<=n;i++){
        int tmp;cin>>tmp;
        l.push_back(tmp);
    }
    dfs(0, 0, 0);
    cout<<ans;
    return 0;
}

样例可过, 提交只有1个Task能过

求大佬帮忙看看是不是dfs写错了

2024/7/1 22:02
加载中...