原题链接:https://www.luogu.com.cn/problem/P1036
各位dalao求助,为什么我的代码样例输出6啊?
#include <iostream>
using namespace std;
int a[25], book[25], ans[25];
int res = 0;
int n, k;
inline bool prime(int n)
{
if (n < 2) return false;
for (int i = 2; i * i <= n; i++)
if (n % i == 0) return false;
return true;
}
inline void check()
{
int s = 0;
for (int i = 1; i <= k; i++) s += ans[i];
if (prime(s)) res++;
}
inline void dfs(int ceng)
{
if (ceng == k + 1)
{
check();
return;
}
for(int i=1;i<=n;i++)
if (!book[i])
{
book[i] = 1;
ans[ceng] = a[i];
dfs(ceng + 1);
book[i] = 0;
}
}
int main()
{
cin >> n >> k;
for (int i = 1; i <= n; i++) cin >> a[i];
dfs(1);
cout << res << endl;
}