题目:
思路:
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