本蒟蒻刚学了深搜,找了一道题做,错的一塌糊涂!
QAQ
#include<bits/stdc++.h>
using namespace std;
const int MAX=23;
int a[MAX],k,n,c;bool vis[MAX];
int f(int s){
for(int i=2;i<=sqrt(s);++i){
if(s%i==0){
return 0;
}
}
return 1;
}
void dfs(int df,int sum){
for(int i=df;i<=n;i++){
if(df==n&&f(sum)==1){
vis[sum]=1;
return;
}
dfs(df+1,sum+a[df]);
}
}
int main(){
cin>>k>>n;
for(int i=1;i<=k;i++) cin>>a[i];
dfs(1,0);
for(int i=1;i<=100000;i++)
{
if(vis[i]) c++;
}
cout<<c;
return 0;
}
特向大佬求解!