原题链接

这道题,每个物品,就是选与不选两种情况,那么我们就用dfs暴搜,每次dfs要么选这个,要么不选这个

每次都到n+1停止

dfs方法

  1. 每次都暴力 选与不选两种情况,因为每个物品都有可能选或者不选
  2. 那么就遍历到n+1处,结束即可
#include <iostream>
#include <cstring>
#include <algorithm>using namespace std;const int N = 15;int n, l, r, x;
int w[N];int dfs(int u, int cnt, int sum, int minw, int maxw)
{if (u == n){if (cnt >= 2 && sum >= l && sum <= r && maxw - minw >= x)return 1;return 0;}int res = 0;res += dfs(u + 1, cnt, sum, minw, maxw);res += dfs(u + 1, cnt + 1, sum + w[u], min(minw, w[u]), max(maxw, w[u]));return res;
}int main()
{cin >> n >> l >> r >> x;for (int i = 0; i < n; i ++ ) cin >> w[i];cout << dfs(0, 0, 0, 1e7, 0) << endl;return 0;
}作者:yxc
链接:https://www.acwing.com/activity/content/code/content/6326578/
来源:AcWing
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

二进制枚举

#include <iostream>
#include <cstring>
#include <algorithm>using namespace std;const int N = 15;int n, l, r, x;
int w[N];int main()
{cin >> n >> l >> r >> x;for (int i = 0; i < n; i ++ ) cin >> w[i];int res = 0;for (int i = 0; i < 1 << n; i ++ ){int cnt = 0, sum = 0, minw = 1e7, maxw = 0;for (int j = 0; j < n; j ++ )if (i >> j & 1){cnt ++ ;sum += w[j];minw = min(minw, w[j]);maxw = max(maxw, w[j]);}if (cnt >= 2 && sum >= l && sum <= r && maxw - minw >= x)res ++ ;}cout << res << endl;return 0;
}作者:yxc
链接:https://www.acwing.com/activity/content/code/content/6326578/
来源:AcWing
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

【二进制枚举】【dfs暴搜】相关推荐

  1. 算法提高课-图论-单源最短路的综合应用-AcWing 1135. 新年好:dijkstra和dfs暴搜结合

    题目分析 来源:acwing 分析: 先预处理出从1,a,b,c,d,e出发到其他所有点的单源最短路.存在二维数组dist[6][N]中 dfs暴搜所有拜访顺序,共有5!种,对于每一种拜访顺序,可以通 ...

  2. 和为K(二进制枚举和深搜)

    二进制枚举: #include<bits/stdc++.h> using namespace std; int main() {int n,k;int i,j;int a[25] = { ...

  3. hdu4848 DFS 暴搜+ 强剪枝

    题意:       给你一个图,然后问你从1出发遍历所有的点的距离和是多少,这里的距离和是每一个点到1的距离的总和,不是选择一条遍历所有点的路径的总长度,时间限制是 8000ms. 思路:       ...

  4. Leetcode5635. 构建字典序最大的可行序列[C++题解]:dfs暴搜

    文章目录 题目 题目链接 题目 题目重述:给定一个数n,求一个长度为2n-1的序列:1只出现一次,2~n之间每个数出现2次,并且 对于2 ~n之间的每个数i,两个i之间相差为i,比如n=3,[3,1, ...

  5. PAT甲级1119 Pre- and Post-order Traversals (30分):[C++题解]暴搜dfs、前序遍历和后序遍历求中序遍历

    文章目录 题目分析 题目链接 题目分析 分析 给了前序遍历和后序遍历,能够确定根结点,但是左子树和右子树的长度是不确定的.这里采用的解决方案是枚举左子树的结点个数,其实右子树的结点个数也确定了.对于每 ...

  6. 二进制枚举爆搜DFS

    给定一个如下图所示的全圆量角器. 初始时,量角器上的指针指向刻度 0. 现在,请你对指针进行 n 次拨动操作,每次操作给定一个拨动角度 ai,由你将指针拨动 ai 度,每次的拨动方向(顺时针或逆时针) ...

  7. 潜水员:【爆搜 + 二进制枚举 + DP】

    题目: 潜水员为了潜水要使用特殊的装备. 他有一个带2种气体的气缸:一个为氧气,一个为氮气. 让潜水员下潜的深度需要各种数量的氧和氮. 潜水员有一定数量的气缸. 每个气缸都有重量和气体容量. 潜水员为 ...

  8. hdu4982 暴搜+剪枝(k个数和是n,k-1个数的和是平方数)

    题意:       给你两个数n,k问你是否怎在这样一个序列:      (1)这个序列有k个正整数,且不重复.      (2)这k个数的和是n.      (3)其中有k-1个数的和是一个平方数. ...

  9. [ NOIP提高组 2016]愤怒的小鸟(暴搜 + 状压DP)// [SNOI2017]一个简单的询问(莫队)

    一次性写两道题 T1:一个简单的询问 题目 题解 代码实现 T2:愤怒的小鸟 题目 暴搜题解 暴搜代码实现 状压DP题解 状压DP代码实现 T1:一个简单的询问 题目 给你一个长度为 N 的序列 ai ...

最新文章

  1. Javabean学习纪要
  2. python3 from import 与 import 区别
  3. stm32_CAN总线知识
  4. Python 文件的详细操作
  5. java中如何关闭文件,在Java中捕获IOException后如何关闭文件?
  6. Arduino笔记-数字输入(开关的正确使用)
  7. 还在一个个复制数据?——今天教你控制台爬数据!
  8. pgAdminIII使用图解
  9. 使用iconv命令转码(UTF8-GBK)数据异常
  10. 3D游戏开发套件指南(入门篇,转自Unity官方平台公众号)
  11. word目录中英文开头目录不对齐
  12. 鼠标移到图片上图片放大
  13. gogo/protobuf proto.GoGoProtoPackageIsVersion2、proto3 版本 不一致
  14. since作为连词引导时间状语从句的用法
  15. MT6323详细芯片资料分享 MT6323设计原理图须知
  16. 基因加性方差、显性方差与上位性方差定义
  17. Avril Lavigne: Complicated
  18. java double 排序_转载:qsort细节用法,double型的排序我竟然一直用错了~~~
  19. 记一次Linux 下磁盘分配和扩容操作
  20. 基于小波变化图像融合

热门文章

  1. ftok函数 php,php坑:ftok
  2. 无锁编程与有锁编程的效率总结、无锁队列的实现(c语言)
  3. 深入理解MyBatis一级缓存和二级缓存【超详细源码解析】
  4. [Apache Pulsar] 企业级分布式消息系统-Pulsar入门基础
  5. GoPro实时图片传输
  6. 微软Bringing-Old-Photos-Back-to-Life与腾讯GFPGAN图片修复项目
  7. 属于「ALL BLACK」的魅力 做不被定义的自己
  8. python去除常见标点符合以及空格
  9. 深度测评各大集成灶品牌的优缺点(解读集成灶好处和坏处)
  10. 腾讯大佬总结的人脸表情识别技术