嗯....

这种类型的题在新手村出现还是比较正常的,

但是不知道为什么它的分类竟然是过程函数与递归!!!(难道这不是一个深搜题吗???

好吧这就是一道深搜题,所以千万别被误导...

先看一下题目:https://www.luogu.org/problemnew/show/P1036

一道比较典型的深搜...

思路:

在n个数和每k个数这两个范围中进行搜索,然后看加起来的和是否为素数即可(详细的也不会说...注意边界条件为n个数全搜完和已经搜完k个数判断后... 大体过程:
主函数输入输出调用----->is_prime函数判断是否为素数------->深搜 下面是AC代码:
 #include<cstdio>
#include<iostream>
#include<cmath> using namespace std; int x[], n, k, total;
inline bool is_prime(int x){
for(int i = ; i <= sqrt(x); i++)
if(x % i == ) return false;
return true;
} //筛素数 inline void dfs(int step, int sum, int cnt){
if(step == n + || cnt == k){ // 如果已经进行到了n+1次或者是已经有k个数,
if(is_prime(sum) && cnt == k)//判断选k个数后的和是否为素数
total++; // 方案+1
return;
}
dfs(step+, sum + x[step], cnt+);//继续搜索,选择下一个数
dfs(step+, sum, cnt);//继续枚举不选择下一个数的情况
return;
}//深搜
int main(){
scanf("%d%d", &n, &k);
for(int i = ; i <= n; i++){
scanf("%d", &x[i]);
}
dfs(, , );
printf("%d", total);
return ;
}

嗯... 关于深搜就是这样 ...

洛谷 P1036 选数的更多相关文章

  1. 【搜索】【入门】洛谷P1036 选数

    题目描述 已知 n个整数x1​,x2​,…,xn​,以及1个整数k(k<n).从nn个整数中任选kk个整数相加,可分别得到一系列的和. 例如当n=4,k=3,4个整数分别为3,7,12,19时, ...

  2. 洛谷P1036 选数 题解 简单搜索/简单状态压缩枚举

    题目链接:https://www.luogu.com.cn/problem/P1036 题目描述 已知 \(n\) 个整数 \(x_1,x_2,-,x_n\) ,以及 \(1\) 个整数 \(k(k& ...

  3. (水题)洛谷 - P1036 - 选数

    https://www.luogu.org/problemnew/show/P1036 $n$ 才20的数据量,我当时居然还在想怎么分组组合,直接 $2^{20}$ 暴力搞就行了. $x_i $太大了 ...

  4. 洛谷P1036选数(素数+组合数)

    题目链接:https://www.luogu.org/problemnew/show/P1036 主要考两个知识点:判断一个数是否为素数.从n个数中选出m个数的组合 判断一个数是否为素数: 素数一定是 ...

  5. 洛谷——P1036 选数

    题目描述 已知 n 个整数 x1,x2,…,xn,以及一个整数 k(k<n).从 n 个整数中任选 k 个整数相加,可分别得到一系列的和.例如当 n=4,k=3,4 个整数分别为 3,7,12, ...

  6. 【洛谷P1036 选数】

    这个题显然用到了深搜的内容 让我们跟着代码找思路 #include<bits/stdc++.h>//万能头 ],ans; inline bool prime(int n)//最简单的判定素 ...

  7. 洛谷 P1036 选数【背包型DFS/选or不选】

    题目描述 已知 n 个整数 x1,x2,…,xn,以及一个整数 k(k<n).从 n 个整数中任选 k 个整数相加,可分别得到一系列的和.例如当 n=4,k=3,4 个整数分别为 3,7,12, ...

  8. 洛谷P1036.选数(DFS)

    题目描述 已知 n个整数 x1,x2,-,xn,以及11个整数k(k<n).从n个整数中任选k个整数相加,可分别得到一系列的和.例如当n=4,k=3,4个整数分别为3,7,12,19时,可得全部 ...

  9. 洛谷P1036 选数

    题目描述 已知 n 个整数 x1,x2,…,xn,以及一个整数 k(k<n).从 n 个整数中任选 k 个整数相加,可分别得到一系列的和.例如当 n=4,k=3,4 个整数分别为 3,7,12, ...

随机推荐

  1. C Primer Plus学习笔记(五)- C控制语句:循环

    伪代码的概念: 伪代码是一种用简单的句子表示程序思路的方法,它与计算机语言的形式相对应.伪代码有助于设计程序的逻辑.确定程序的逻辑无误之后,再把伪代码翻译成实际的编程代码.使用伪代码的好处之一是,可以 ...

  2. Rename Oracle Managed File (OMF) datafiles in ASM(ZT)

    Recently I was asked to rename a tablespace. The environment was Oracle version 11.2.0.3 (both datab ...

  3. Oracle 设置主键自增长__Oracle

    转自:https://yq.aliyun.com/ziliao/258074 如果想在Oracle数据库里实现数据表主键自增,我们似乎没有办法像MySql般直接定义列的属性来实现.不过对于这个数据库的 ...

  4. docker 笔记 (5)常用命令

    images    显示镜像列表 history   显示镜像构建历史 commit    从容器创建新镜像 build     从 Dockerfile 构建镜像 tag       给镜像打 ta ...

  5. xcode编写c/c++静态库使用系统头文件问题

    c/c++编写的静态库中有引用ios系统头文件比如: #include <EGL/egl.h> 在xcode编译的时候需要设置静态库程序: Build Settings-Header Se ...

  6. sql server导入excel等数据

    1.首先打开并登陆sql server数据库 2.选择要将表导入的数据库,右击选择任务-->导入数据 3.在弹出的窗口中选择下一步 4.在弹出的窗口中选择数据源,也就是从哪种文件导入,sql s ...

  7. js闭包(二)

    一.何谓“闭包”? 所谓“闭包(Closure)”,指的是一个拥有许多变量和绑定了这些变量的环境的表达式(通常是一个函数),因而这些变量也是该表达式的一部分. 描述的如此学术的官方解释,相信很少人能够 ...

  8. 第5章 使用MUI与H5+构建移动端app

    H5+是JS封装的工具集合,通过H5+我们就可以使用JS的方式去调用到我们手机端上的一些原生的组件. http://dev.dcloud.net.cn/mui/ http://dev.dcloud.n ...

  9. maven安装第三方jar包到本地仓库

    添加项目依赖的时候,有些jar下载不下来,只有手动下载或安装到本地仓库了 首先下载所需要的jar,放到指定的文件夹 然后执行如下命令: mvn install:install-file -Dfile= ...

  10. vue 滚动加载数据

    参考链接:https://www.npmjs.com/package/vue-infinite-scroll