算法训练
Z.Clark
东南大学网络空间安全研究生
展开
-
单词接龙问题:双向BFS解法
单词接龙问题 题目: 给定两个单词(beginWord 和 endWord)和一个字典,找到从 beginWord 到 endWord的最短转换序列的长度。转换需遵循如下规则: 每次转换只能改变一个字母。 转换过程中的中间单词必须是字典中的单词。 说明: 如果不存在这样的转换序列,返回 0。 所有单词具有相同的长度。 所有单词只由小写字母组成。 字典中不存在重复的单词。 你可以假设beg...原创 2020-04-29 14:39:16 · 237 阅读 · 0 评论 -
C++ bitset 用法
C++的 bitset 在 bitset 头文件中,它是一种类似数组的结构,它的每一个元素只能是0或1,每个元素仅用1bit空间。 下面是具体用法 构造函数 bitset常用构造函数有四种,如下 bitset<4> bitset1; //无参构造,长度为4,默认每一位为0 bitset<8> bitset2(12); //长度为8,二进制保存,前面用0补充 stri...转载 2020-04-29 11:02:03 · 141 阅读 · 0 评论 -
并查集模板(C++)
class unionFind { private: int count = 0; vector<int> parent; vector<int> weight; public: //初始化并查集 unionFind(int n) { count = n; parent.resize(n); ...原创 2020-04-28 21:10:19 · 206 阅读 · 0 评论 -
位运算的一些笔记
最近做每日一题,大神用位运算秀的操作,真的是秀我一脸,为此我特地做了位运算的小笔记,以供日后参考。????! 运算符次序问题:C++运算符优先级 有大佬的话,给补充下呀!???? (一)概念 按位与(&):两数对应位均为1,结果为1,其他为0 按位或(|):两数对应位均为0,结果为0,其他为1 按位异或(^):两数对应位同0异1 按位取反(~):所有位上,1变0, 0变1 左移(<<)...原创 2020-04-19 16:19:38 · 115 阅读 · 0 评论 -
算法训练之DP小结(分治 + 最优子结构)
DP(分治 + 最优子结构) 本质上来说,是找最近最简方法,利用数学归纳法的思维,将问题拆解为可重复解决的子问题,寻找其最优子结构。 1. 格外需要注意的技巧 利用缓存(状态的存储数组)剪枝 淘汰次优解 2. 实现方式 自顶向下:递归 + 记忆化搜索 自底向上:循环递推 3. DP关键点 最优子结构 cpp opt[n] = best_of(opt[n - 1], opt[n ...原创 2020-04-19 16:34:24 · 708 阅读 · 0 评论 -
算法训练之二分查找小结(C++)
二分查找小结 从这周的习题和每日一题来看,二分查找虽然思想简单,但变体众多,且极易出错。因此,小结以求避坑。 参考:王争老师的专栏 二分查找(上) 二分查找(下) 先给出二分查找模板(C++): int low = 0; int high = n - 1; while (low <= high) { int mid = low + ((high - low) >> ...原创 2020-04-19 16:33:40 · 186 阅读 · 0 评论 -
【分享】 禁止套娃?其实递归也很简单
禁止套娃?其实递归也很简单! 什么是递归 首先要了解递归是什么? 递归(recursion)做为一种算法在程序设计语言中广泛应用。 一个过程或函数在其定义或说明中有直接或间接调用自身的一种方法,它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解,递归策略只需少量的程序就可描述出解题过程所需要的多次重复计算,大大地减少了程序的代码量。递归的能力在于用有限的语句来定义对象的无限...转载 2020-04-19 16:32:52 · 460 阅读 · 0 评论 -
C++标准库之栈和队列的若干方法
按课程中超哥给的查询方法,查阅并总结了一些C++标准库之栈和队列的若干方法,供我等新手参考! C++标准库之栈和队列的若干方法 一、栈(stack) 官方stack详解 先进后出。入栈、出栈时,两种实现方式的时间复杂度和空间复杂度均为O(1)。 使用栈时,必须包含头文件: #include <stack> 定义栈,以如下形式定义实现:stack s; 栈的主要方法: s.push(...原创 2020-04-19 16:21:05 · 235 阅读 · 0 评论