(递归)P1036 选数
#include<stdio.h>
#include<math.h>
int x[20],n,k,i;
//判断是否质数
int isprime(int n){
for(i=2;i<=sqrt(n);i++){
if(n%i==0)return 0;
}
return 1;
}
*******************************************************************
//重点
//choose_left_num为剩余的k,already_sum为前面累加的和,start和end为全组合剩下数字的选取范围;调用递归生成全组合,在过程中逐渐把K个数相加,当选取的数个数为0时,直接返回前面的累加和是否为质数即可
//每次选数的时候,我要知道选数范围、累加之和以及剩余次数
int rule(int choose_left_num,int already_sum,int start,int end){ //自己做时就没有考虑递归传入选区范围
if(choose_left_num==0)return isprime(already_sum);
int sum=0; //有几个素数
for(i=start;i<=end;i++){ //没有加够k个数时,就会因i>end而结束循环
sum+=rule(choose_left_num-1,already_sum+x[i],i+1,end);
}
return sum;
}
/*自己写的(错误)
int p(int n,int c){
int s=0;
if(c==1){
return a[n];
}
for(;n<2;n++){
s+=a[n]+p(n+1,c-1);
}
return s;
}
*/
*****************************************************************
int main(){
scanf("%d %d",&n,&k);
for(i =0;i<n;i++)scanf("%d",&x[i]);
printf("%d",rule(k,0,0,n-1));//调用递归解决问题
}
(递归)P1036 选数的更多相关文章
- luogu P1036 选数 x
P1036 选数 题目描述 已知 n 个整数 x1,x2,…,xn,以及一个整数 k(k<n).从 n 个整数中任选 k 个整数相加,可分别得到一系列的和.例如当 n=4,k=3,4 个整数分别 ...
- 【搜索】【入门】洛谷P1036 选数
题目描述 已知 n个整数x1,x2,…,xn,以及1个整数k(k<n).从nn个整数中任选kk个整数相加,可分别得到一系列的和. 例如当n=4,k=3,4个整数分别为3,7,12,19时, ...
- p1036 选数(不详细勿看,递归)
题目:传送门 这题,不会做,而且看了好久才看懂题解的,然后在题解的基础上补了一个 if(start>end) return 0 感觉这样对于我更直观 转载自:大神博客的传送门,点击进入 先声明, ...
- 洛谷P1036 选数 题解 简单搜索/简单状态压缩枚举
题目链接:https://www.luogu.com.cn/problem/P1036 题目描述 已知 \(n\) 个整数 \(x_1,x_2,-,x_n\) ,以及 \(1\) 个整数 \(k(k& ...
- P1036 选数 题解
题目链接https://www.luogu.org/problemnew/show/P1036 题目描述 已知 nnn 个整数 x1,x2,-,xnx_1,x_2,-,x_nx1,x2,-,xn ...
- 洛谷 P1036 选数
嗯.... 这种类型的题在新手村出现还是比较正常的, 但是不知道为什么它的分类竟然是过程函数与递归!!!(难道这不是一个深搜题吗??? 好吧这就是一道深搜题,所以千万别被误导... 先看一下题目: 题 ...
- P1036 选数(DFS)
题目 https://www.luogu.org/problemnew/show/P1036 思路 搜索,使用递归实现dfs,所有数字遍历一遍,当取遍所有数组的index(扫了一遍,并非一定是选取了) ...
- 洛谷P1036选数(素数+组合数)
题目链接:https://www.luogu.org/problemnew/show/P1036 主要考两个知识点:判断一个数是否为素数.从n个数中选出m个数的组合 判断一个数是否为素数: 素数一定是 ...
- 洛古P1036 选数 题解
[我是传送门] 这是一道很经典的深搜与回溯(难度一般) 可是就这个"普及-" 让本蒟蒻做了一晚上+半个上午(实际我不会深搜回溯,全靠框架+去重); 下面让我分享下本蒟蒻的(全排列+ ...
随机推荐
- CentOS 6.x 重置root 密码
1.重启,进入启动界面,快速按e,进入GNU GRUB界面. 2.选择第二项,按e,进行编辑. 3.在末尾输入1或single,回车,返回上一界面,还是选第二项,按b,进入单用户模式. 此时输入命令 ...
- [LeetCode] 934. Shortest Bridge 最短的桥梁
In a given 2D binary array A, there are two islands. (An island is a 4-directionally connected grou ...
- 110-PHP类成员属性赋值
<?php class mao{ //定义猫类 public $age=0; //定义多个属性并初始化 public $weight=50; public $color='white'; } $ ...
- 089-PHP数组运用 - 通过循环函数取出部分成员合并成新数组
<?php function myfunc($arr){ //定义过滤函数 $j=count($arr); for($i=0;$i<$j;$i++){ if($arr[$i]>=0& ...
- python进阶—OpenCV之常用图像操作函数说明(转)
文章目录cv2.thresholdcv2.bitwise_andcv2.bitwise_orcv2.bitwise_notcv2.inRangecv2.resizecv2.adaptiveThresh ...
- Mapper method 'com.xxxx.other.dao.MyDao.getNo attempted to return null from a method with a primitive return type (int)
使用myBatis调用存储过程的返回值,提示错误信息: org.apache.ibatis.binding.BindingException: Mapper method 'com.xxxx.othe ...
- P 1030 完美数列
转跳点:
- HDU 5430:Reflect 欧拉函数
Reflect Accepts: 72 Submissions: 302 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/ ...
- 19 01 17 Django 模型 使用mysql数据库
今天演示使用MySQL数据库,这是Web项目首选的数据库. 进入虚拟环境py_django. workon py_django 在/home/python/pytest目录下创建项目test2. dj ...
- 多线程开发之GCD
简介GCD本身是苹果公司为多核的并行运算提出的解决方案.GCD在工作时会自动利用更多的处理器核心,以充分利用更强大的机器.GCD是Grand Central Dispatch的简称,它是基于C语言的. ...