17fen求助
查看原帖
17fen求助
267517
Mikemao666楼主2020/5/24 07:17

写了一个dfs但是会计重

#include<bits/stdc++.h>
using namespace std;
int a[21],ans,tot;
bool p[21];
int n,k;
inline bool isPrime(int a) {
  if (a < 2) return 0;
  for (int i = 2; i * i <= a; ++i)
    if (a % i) return 0;
  return 1;
}
inline void dfs(int l,int i){
    if(l==k){
        if(isPrime(tot)==1)
            ans++;
        return;
    }
    for(int q=i;q<=n;++q){
        if(!p[q]){
            p[q]=1;
            tot+=p[q];
            dfs(l+1,q+1);
            p[q]=0;
            tot-=p[q];
        }
    }
}
int main () {
    cin>>n>>k;
    for(int i=1;i<=n;++i){
        scanf("%d",&a[i]);
    }dfs(0,1);
    printf("%d",ans);
    return 0;
}
2020/5/24 07:17
加载中...