caioj1033:递归3(组合+判断素数)
来源:互联网 发布:女生滴风油精知乎 编辑:程序博客网 时间:2024/06/14 11:24
【闲话】挨了个代码出来然后输出一直是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
【代码】
//i数组下标 第一个数后至少r-k个数 //第k个位置放a[i] j:开始选的第一个数 a数组中第j个数作为k位置第一个选项 //搜索有范围 保证j后有足够的数 #include<cstdio>#include<cmath>//#include<numeric>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;}
阅读全文
0 0
- caioj1033:递归3(组合+判断素数)
- 1033: 递归3(组合+判断素数)
- 【递归入门】组合+判断素数
- 【递归入门】组合+判断素数
- 组合(非递归)
- 判断素数(C#)
- 素数判断(数论)
- is_prime(素数判断)
- 判断素数(函数)
- 判断素数(质数)
- 判断素数(质数)
- 夕拾算法进阶篇:8)组合+判断素数(dfs)
- 组合素数
- 递归加暴力打表,求c(n,m)中m种组合方案,总和为素数
- 函数和递归(组合数,孪生素数,用指针实现变量交换,求解二院一次方程组)
- 素数环(递归)问题
- 组合数,擅长排列的小明,素数环,深度优先搜索,递归(尤其是素数环)
- 素数测试(判断素数)模板
- [NOIP模拟赛]偶数度问题
- Mybatis与Hibernate的简单对比
- 类ThreadLocal的使用
- 数据结构 链表 合并两个有序的单链表 C语言版
- error:could not open ...jvm.cfg解决方法
- caioj1033:递归3(组合+判断素数)
- 问题:占座位
- 多线程
- QT打包支持dll, windeployqt
- deformable convolution
- How to install pip3 for python 3.x
- 树的公共祖先问题
- 健康话语:心悸
- java学习之路