真 题解
2025-12-07 11:25:42
发布于:浙江
0阅读
0回复
0点赞
#include <bits/stdc++.h>
using namespace std;
int a[100];
int b[50];
int vis[100];
int n,k,ans;
void dfs(int x,int sum)
{
if(x == k+1)
{
bool h=1;
for(int i = 2;i*i <= sum;i++)
{
if(sum % i == 0)
{
h = 0;
}
}
if(h)
{
ans++;
}
return;
}
for(int i = a[x-1]+1;i <= n;i++)
{
if(vis[i]==1) continue;
a[x] = i;
vis[i]=1;
sum += b[i];
dfs(x+1,sum);
sum -= b[i];//回溯
vis[i]=0;//回溯
}
}
int main()
{
cin >> n >> k;
for(int i = 1;i <= n;i++)
{
cin >> b[i];
}
dfs(1,0);
cout << ans;
}
这里空空如也







有帮助,赞一个