caioj1033:递归3(组合+判断素数)
2017-08-27 17:07
381 查看
【闲话】挨了个代码出来然后输出一直是0检查了一个小时才发现问题 emmm中途内心是崩溃的 最后发现又是没有在循环内初始化累加和 qwq 不过发现了很多需要注意的东西
1.判断质数 取平方根是sqrt(x+1) 循环从i=2开始 (老习惯写成1qwq 1是任何数的因数啊喂!!!!
2.初始化 初始化 初始化
3.学到了一个求和的东西(....虽然老师说不用管但是就是自己写求和的时候写错了qwq)t=accumulate(b+1,b+r+1,0); b数组下标1~r求和 0是起始值!!!!!!!!!!!0000000000000000自己写不要忘了0啊啊啊啊啊(够)
头文件#include<numeric>
4.一个英文单词/doge prime number:素数
【题意】
已知 n 个整数 x1,x2,…,xn,以及一个整数 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 3
3 7 12 19
【样例输出】
1
【代码】
1.判断质数 取平方根是sqrt(x+1) 循环从i=2开始 (老习惯写成1qwq 1是任何数的因数啊喂!!!!
2.初始化 初始化 初始化
3.学到了一个求和的东西(....虽然老师说不用管但是就是自己写求和的时候写错了qwq)t=accumulate(b+1,b+r+1,0); b数组下标1~r求和 0是起始值!!!!!!!!!!!0000000000000000自己写不要忘了0啊啊啊啊啊(够)
头文件#include<numeric>
4.一个英文单词/doge prime number:素数
【题意】
已知 n 个整数 x1,x2,…,xn,以及一个整数 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 3
3 7 12 19
【样例输出】
1
【代码】
//i数组下标 第一个数后至少r-k个数 //第k个位置放a[i] j:开始选的第一个数 a数组中第j个数作为k位置第一个选项 //搜索有范围 保证j后有足够的数 #include<cstdio> #include<cmath>//#include<numeri 4000 c> using namespace std; int n,r,a[25],b[25],s,ans; bool isss(int x){ if (x<2) return false; int k = sqrt(x); for (int i=2;i<=k;i++)//2开始 if (x%i==0) return false; return true; } void dfs(int k,int j){ if(k==r+1) { s=0;//初始化!!!! for(int i=1;i<=r;i++) s+=b[i];//t=accumulate(b+1,b+r+1,0); if(isss(s)) ans++; return ; } for(int i=j;i+r-k<=n;i++) { b[k]=a[i]; dfs(k+1,i+1);//第k个数是a[i] 第k+1个数至少a[i+1] } } int main(){ scanf("%d%d",&n,&r); for(int i=1;i<=n;i++) scanf("%d",&a[i]); dfs(1,1); printf("%d",ans); return 0; }
相关文章推荐
- caioj1032· 递归2(组合)
- 1033: 递归3(组合+判断素数)
- 【递归入门】组合+判断素数
- 【递归入门】组合+判断素数
- caioj1042:递归12(平分石头)
- 【杭电oj】2049-考新郎(递归,排列组合)
- caioj1036:递归6(统计出栈)
- 5974 Problem C 【递归入门】组合+判断素数
- caioj1037:递归7(走迷宫)
- caioj1040:递归10(素数圈)
- caioj1031:递归1(全排列)
- caioj1043·递归13(因式分解【深搜+剪枝 或 DP 】)
- 试题:组合的模板非递归实现
- 递归实现排列组合问题
- CSUOJ 1021 组合数末尾的零 二进制
- 九度OJ 1095:2的幂次方 (递归)
- 用递归实现排列组合
- 一道递归思想的排列组合题目
- oj继承与组合
- nyoj+求所有组合数,dfs,递归需要好好理解