文章目录

  • 题目解答
  • 题目链接

题目解答

分析:
此题和笔者另一篇博文很像,只不过是限定了个数。《算法竞赛进阶指南》打卡-基本算法-AcWing 92. 递归实现指数型枚举:递推与递归、二进制状态压缩、dfs

  1. 状态压缩,用二进制数中的某一位来表示哪个数选了,哪个数没选。二进制第i位为1,表示选择了数 i+1.比如二进制数的第0位表示选择了1这个数,二进制位中的第3位表示选择了4这个数。
  2. 想好dfs退出的条件。要么是找到了m个数,要么是n个数都遍历完。

如果读者对state >> i & 1这句话有疑问,下面对其进行解释(下用i代替state):

i >> j & 1

这里的运算优先级需要知道: 右移运算符(>>)的优先级高于 位运算,所以这里先计算(i >> j),含义是i的二进制右移j位,也就是找到了i的第j位,然后与1(&1),含义是判断这一位是否为1.(当然,这里的位,都是指二进制下的某一位)。

综上,i >> j & 1表示 i的二进制表示中第j位是否为1.

ac代码


#include<bits/stdc++.h>
using namespace std;
int n, m;/*
u:当前枚举到第几个数
sum:当前共选择了几个数,是否达到m个的要求
state:判断某个数是否选上,状态压缩,用二进制表示而已。
*/void dfs(int u ,int sum, int state){// 满足m个数啦,可以输出if(sum == m){for(int i = 0; i < n; i++)if(state >> i & 1) cout<< i + 1 << " ";cout << endl;return;}// n个数都遍历完了,退出即可。if( u == n) return;//下面是dfs的转移:分为两种情况:选不选u这个数。// 选择当前值u, 个数sum++dfs(u + 1, sum + 1, state | 1 << u);// 不选择当前值u, 个数sum不变dfs(u + 1, sum, state);
}int main(){cin >> n >> m;// 当前枚举到第几个数,当前选了多少个数,状态看看这个数选没选dfs(0, 0, 0);
}

题目链接

https://www.acwing.com/problem/content/95/

《算法竞赛进阶指南》打卡-基本算法-AcWing 93. 递归实现组合型枚举:递归与递推、dfs、状态压缩相关推荐

  1. 金字塔(算法竞赛进阶指南)

    虽然探索金字塔是极其老套的剧情,但是有一队探险家还是到了某金字塔脚下. 经过多年的研究,科学家对这座金字塔的内部结构已经有所了解. 首先,金字塔由若干房间组成,房间之间连有通道. 如果把房间看作节点, ...

  2. 《算法竞赛进阶指南》数论篇

    <算法竞赛进阶指南>数论篇(1)-最大公约数,素数筛,欧拉函数,同余,欧拉定理,BSGS <算法竞赛进阶指南>数论篇(1)-最大公约数,素数筛,欧拉函数,同余,欧拉定理,BSG ...

  3. 《算法竞赛进阶指南(by 李煜东)》习题题解 集合

    又是笔者给自己挖的大坑. 这里是李煜东所著<算法竞赛进阶指南(by 李煜东)>的习题题解集合. 有任何错误请在对应文章下反馈或联系 nicest1919@163.com ,谢谢 qwq 从 ...

  4. CH5202 自然数拆分Lunatic版(算法竞赛进阶指南,完全背包)

    算法竞赛进阶指南,278页,完全背包 本题要点: 1.把完全背包的代码改改即可.常规的完全背包: 有n个物品,每个物品的体积是v[i], 价值是w[i], 求装到大小为m的大背包,能获得的最大价值(每 ...

  5. 中位数--《算法竞赛进阶指南》(货仓选址和七夕祭问题详解)

    中位数 今天又和大家见面了啦~ 依旧是 <算法竞赛进阶指南>的学习哦~ 中位数(Median)又称中值,统计学中的专有名词,是按顺序排列的一组数据中居于中间位置的数,代表一个样本.种群或概 ...

  6. AcWing 122. 糖果传递【贪心】【《算法竞赛进阶指南》,微软面试题 , HAOI2008】

    AcWing 122. 糖果传递 一.题目链接 二.题目分析 (一)算法标签 (二)解题思路 三.AC代码 四.其它题解 一.题目链接 AcWing 122. 糖果传递 进阶题目 AcWing 105 ...

  7. 算法竞赛进阶指南 骑士放置

    4: 最大独立集 :选出最多的点,使得选出的点之间没有边. 求最大独立集:选出最小的点可以破坏所有的边 <==>最小点覆盖 <==>最大匹配数. 假设最大匹配数为m,共有n个点 ...

  8. 算法竞赛进阶指南 萌新入门!

    算法竞赛进阶指南 文章目录 算法竞赛进阶指南 前言 一.介绍本书 二.如何阅读本书 三.总结 **笔记思路和结构 ** 算法竞赛进阶指南 这篇文章就简单的写一下吧! 前言 ​ 作为一个想要入坑的算法的 ...

  9. 算法竞赛进阶指南0x3A 博弈论之SG函数

    算法竞赛进阶指南0x3A 博弈论之SG函数

最新文章

  1. 免费报名!百度大脑开放日·互联网内容安全线上专场来袭
  2. 电脑技巧:分享七个解决烦人的弹窗广告的小技巧
  3. 探究call 和 apply 的原理
  4. SDOI2016R2(怎么可能是解题报告)
  5. Kali Linux 秘籍 第一章 安装和启动Kali
  6. 魔兽世界 8.1 服务器维护时间,魔兽世界8.1内容开放时间表介绍 8.1开放内容汇总介绍...
  7. python数据库查询系统_基于Python和MySQL实现的学生信息管理系统
  8. VSCode创建Vue项目完整教程
  9. TIFF图像文件格式详解——转载
  10. 唐宋边塞诗词中的古灵州
  11. php error reporting,php error_reporting
  12. 提交模式窗口后,刷新父窗口数据+获取frameset中各模块中数据
  13. 关于Verilog 写法
  14. 标准化、归一化、中心化
  15. Lenovo T460 Fn功能键切换
  16. 【SVM时序预测】基于粒子群算法优化支持向量机PSO-SVM实现期贷时序数据预测附matlab代码
  17. 练手练到阅文集团作家中心了,python crawlspider 二维抓取学习
  18. 【托业】【跨栏】REVIEW2
  19. 搭建CocoaPods私有库
  20. 计算机视觉 ----全面介绍

热门文章

  1. linux下安装oracle客户端,实现远程连接oracle库,导出数据表
  2. Hello World!团队第四次会议
  3. java程序员的NodeJS初识篇
  4. CMS模板应用调研问卷
  5. 自己写一个图片按钮(XAML)
  6. Aspx页面中直接编写javascript脚本
  7. (转)jQuery第五课:Ajax
  8. Log4Net 使用 FileAppender (log4net 1.2.10.0)
  9. halcon python_使用pythonnet调用halcon脚本
  10. 池化层对神经网络的运算速度有什么影响