本地能过,但提交时编译错误。
#include<bits/stdc++.h>
using namespace std;
int n,k,arr[25],ans;
int select[25];
bool prime(int x)
{
for(int i=2;i*i<=x;i++)
{
if(x%i==0)
{
return 0;
}
}
return 1;
}
void dfs(int step,int sum,int mn)
{
if(step==k)
{
if(prime(sum))
{
ans++;
}
return;
}
for(int i=mn;i<=n;i++)
{
if(!select[i])
{
select[i]=1;
dfs(step+1,sum+arr[i],i);
select[i]=0;
}
}
}
int main()
{
cin>>n>>k;
for(int i=1;i<=n;i++)
{
cin>>arr[i];
}
dfs(0,0,1);
cout<<ans<<endl;
return 0;
}
提交记录