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