P1036 [NOIP2002 普及组] 选数
本蒟蒻写了一个自认为对的代码,可是才16分
请大佬帮忙看一下哪里错了,感谢!
#include<bits/stdc++.h>
using namespace std;
int n,k,x[205],ans,a[205],vis[205];
bool isprime(int n){
if(n==0 or n==1)return 0;
for(int i=2;i<n;i++)if(n%i==0)return 0;
return 1;
}
void dfs(int pos){
if(pos==k+1){
int temp=0;
for(int i=0;i<=k;i++){
temp+=x[a[i]];
}
if(isprime(temp))ans++;
return;
}
for(int i=1;i<=n;i++){
if(!vis[i]){
vis[i]=1;
a[pos]=i;
dfs(pos+1);
}
}
}
int main(){
cin>>n>>k;
for(int i=1;i<=n;i++){
cin>>x[i];
}
dfs(1);
cout<<ans;
}