P1036 选数
题目:


思路:
1.递归
设置三个变量分别是 当前下标,当前总和,当前加的数字个数
代码如下:
#include<cstdio>
#include<cmath>
#include<iostream>
using namespace std;
int n,k,t,sum=0;
int a[25];
//列举 判断是否为素数
bool is(int b){
for(int i=2;i<=sqrt(b);i++)
if(b%i==0)
return false;
return true;
}
//f加上的个数
//s开始的下标
//t当前的总和
void dfs(int s,int t,int f){
if(s==n+1||f==k)
{ if(is(t)&&f==k)
sum++;
return;
}
dfs(s+1,t+a[s],f+1) ;
dfs(s+1,t,f);
}
main() {
cin>>n>>k;
for(int i=1;i<=n;i++)
cin>>a[i];
dfs(1,0,0);
cout<<sum;
return 0;
}
//4 3
//10 11 12 13
//0
无聊就学习 反正没事干

浙公网安备 33010602011771号