【递归入门】组合+判断素数
来源:互联网 发布:淘宝花种子哪家好 编辑:程序博客网 时间:2024/06/05 10:31
【递归入门】组合+判断素数
题目描述
已知 n 个整数b1,b2,…,bn以及一个整数 k(k<n)。从 n 个整数中任选 k 个整数相加,可分别得到一系列的和。例如当 n=4,k=3,4 个整数分别为 3,7,12,19 时,可得全部的组合与它们的和为: 3+7+12=22 3+7+19=29 7+12+19=38 3+12+19=34。 现在,要求你计算出和为素数共有多少种。例如上例,只有一种的和为素数:3+7+19=29。
输入
第一行两个整数:n , k (1<=n<=20,k<n) 第二行n个整数:x1,x2,…,xn (1<=xi<=5000000)
输出
一个整数(满足条件的方案数)。
样例输入
4 33 7 12 19
样例输出
1
#include <iostream>#include <cstdio>#include <algorithm>#include <cmath>using namespace std;const int maxn=21;int arr[maxn]={0};int rec[maxn]={0};int N,K;bool is_sushu(int n){ for(int i=2;i<=sqrt(n);i++) { if(n%i==0) { return false; } } return true;} int sum(){ int sum=0; for(int i=0;i<K;i++) { sum+=rec[i]; } return sum;}int time=0;void dfs(int arr[],int n,int r,int k1,int k2 ){ if(k1==r) { if(is_sushu(sum())) {// for(int i=0;i<r;i++)// {// cout<<rec[i]<<" ";// // }// cout<<endl;// // int ab=sum(); // cout<<ab<<endl; time++; } return; } else { for(int i=k2;i<n;i++) { rec[k1]=arr[i]; dfs(arr,n,r,k1+1,i+1); } }}int main(){ cin>>N>>K; for(int i=0;i<N;i++) { cin>>arr[i]; } dfs(arr,N,K,0,0); cout<<time<<endl; return 0;}
阅读全文
0 0
- 【递归入门】组合+判断素数
- 【递归入门】组合+判断素数
- caioj1033:递归3(组合+判断素数)
- 1033: 递归3(组合+判断素数)
- 【递归入门】组合的输出
- 【递归入门】组合的输出
- 递归入门:判断回文字符串
- 夕拾算法进阶篇:8)组合+判断素数(dfs)
- 组合素数
- 组合数,擅长排列的小明,素数环,深度优先搜索,递归(尤其是素数环)
- 判断两个数是否为素数的递归法
- 递归入门(三) --- 判断回文字符串
- 递归----组合
- 递归组合
- 素数判断
- 判断素数
- 判断素数
- 判断素数
- 自定义ViewGroup(二)
- Vue-router之初体验(持续更新)
- first path segment in URL cannot contain colon
- 在cmd中报错:java找不到或无法加载主类
- HaoSQL_好用的SQL等数据库一键包发布!
- 【递归入门】组合+判断素数
- Qt5.9 在windows下静态编译
- Scala.for.the.Impatient.2nd.Edition.2016.12.pdf 英文原版 免费下载
- SpringBoot项目集成RabbitMq
- esayui查询信息单选按钮回显选中
- IT领域的721定律
- python 写公司日报3
- 扩展系统功能——装饰模式(二)
- TextInputLayout和TextInputEditText使用