dfs不是这么写的吗~~(当然也有可能是我太久没写忘了(WA了))~~
#include<bits/stdc++.h>
using namespace std;
int s,ans,b[21],size_ans,a[21],n,k;
bool isPrime(int k)
{
for(int i=2;i<=n/2;i++)
{
if(k%i==0)return false;
}
return true;
}
void print()
{
for(int i=1;i<=size_ans;i++)
{
if(b[i]==ans)return;
}
if(isPrime(ans))
{
s++;
b[++size_ans]=ans;
}
}
void dfs(int step,int j)
{
if(step==k+1)
{
print();
return;
}
for(int i=j;i<=n;i++)
{
ans+=a[i];
dfs(step+1,i+1);
ans-=a[i];
}
}
int main()
{
cin>>n>>k;
for(int i=1;i<=n;i++)
{
cin>>a[i];
}
dfs(1,1);
cout<<s;
return 0;
}
变量名有点狂野,大佬帮忙看看哪错了