题目:
解析:
这道题
如果我们想要解决
可以分为两部分
步骤1:
就从样例说起
要从4个数中
选出3个数
这其实就是搜索与回溯的题目
部分排列而已
如果想要学习搜索与回溯
接着还有一个很重要的
就是不能重复
具体是什么意思
请看题目
步骤2:
就是判断素数
如果找到了
就记一次数
很简单
下面不多说
上代码:
代码:
#include<bits/stdc++.h>
#include<iostream>
#include<cstdlib>
#include<cstdio>
using namespace std;
int n,a[1000],b[1000],sum,m,sum2,c[1001],d[1001];
int ddd(int k)
{
for(int j=d[k-1]+1;j<=n;j++)
{
if(a[j]==0&&c[j]>=b[k-1])
{
a[j]=1;
b[k]=c[j];
d[k]=j;
if(k==m)
{
sum2=0;
for(int z=1;z<=m;z++)
sum2+=b[z];
bool flag=true;
for(int i=2;i<=sum2-1;i++)
{
if(sum2%i==0)
{
flag=false;
break;
}
}
if(flag==true)
{
sum++;
/ for(int z=1;z<=m;z++) cout<<b[z]<<z<<" ";
/// cout<<endl;
}
}
else ddd(k+1);
a[j]=0;
}
}
}
int main()
{
//freopen("bfpl.in","r",stdin);
// freopen("bfpl.out","w",stdout);
cin>>n>>m;
for(int i=1;i<=n;i++)
cin>>c[i];
sort(c+1,c+n+1);
ddd(1);
cout<<sum<<endl;
// fclose(stdin);
// fclose(stdout);
return 0;
}