随笔分类 -  Algorithm

摘要:我们使用贪心算法,看看哪个是决定最大长度,从这个切入点入手。然后计算最大时间 #include "iostream" #include "vector" #include "algorithm" using namespace std; struct Job { int b, j; bool ope 阅读全文
posted @ 2020-04-17 11:44 SteveYu 阅读(175) 评论(0) 推荐(0)
摘要:思维体操入门,进行排序后,拿最小的进行比对,如果可以砍头,将骑士能力值置为-1,并加上金额,否则遇到不行的时候,直接打印退出程序。 #include "iostream" #include "algorithm" using namespace std; int n, m; int head[999 阅读全文
posted @ 2020-04-17 03:14 SteveYu 阅读(171) 评论(0) 推荐(0)
摘要:```c // lca_bst node *lca_bst(node *n, node *p, node *q) { if((n->val - p->val) * (n->val - q->val) val val && n->val val) return lca_bst(n->right, p, q); else return lca_bst(n->left, p ,q); } // lca_ 阅读全文
posted @ 2020-04-11 00:22 SteveYu 阅读(258) 评论(0) 推荐(0)
摘要:多谢软院群的小韩和费马的鼎力相助 阅读全文
posted @ 2020-04-09 01:42 SteveYu 阅读(165) 评论(0) 推荐(0)
摘要:KMP算法 在字符串匹配中,我们一般是BF算法,暴力破解。当然上完数据结构课之后,我们知道可以通过KMP进行优化。 上数据结构这门课的时候,我没有好好听KMP,本篇文章参考程杰老师的《大话数据结构》中KMP算法一章节记录的笔记,可以的话请阅读原书中该章节,这里相当于原书的复述。 这边引用书中的一句话 阅读全文
posted @ 2020-01-28 20:30 SteveYu 阅读(163) 评论(0) 推荐(0)
摘要:动态规划 参考视频av16544031、av18512769 一、重叠子问题 问题 1 回顾斐波那契数列,实质是一个递归关系 也是一个overlap sub problem 重叠子问题 如果我们要计算fib(7),就会去计算fib(6)和fib(5),之后继续往下,中间fib(6)分解成fib(5) 阅读全文
posted @ 2020-01-20 23:58 SteveYu 阅读(149) 评论(0) 推荐(0)
摘要:``` typedef struct HNode *Heap; /* 堆的类型定义 */ struct HNode { ElementType *Data; /* 存储元素的数组 */ int Size; /* 堆中当前元素个数 */ int Capacity; /* 堆的最大容量 */ }; typedef Heap MaxHeap; /* 最大堆 */ typedef Heap MinHeap 阅读全文
posted @ 2020-01-17 17:07 SteveYu 阅读(254) 评论(0) 推荐(0)
摘要:[TOC] AVL Tree精讲专题 前言 因为AVL树之前写过一次,但是感觉左右旋转弄反了,这次重新整理了下,参照数据结构——陈越著,分别进行列举c++版本的AVL树和Java版本的AVL树,供参考和互相学习。图片来源,我们老师的PPT。 一、AVL Tree for CPP(Coding) 1. 阅读全文
posted @ 2019-10-21 16:52 SteveYu 阅读(325) 评论(0) 推荐(0)
摘要:快速排序(lomuto划分快排,hoare划分快排,classic经典快排,dualpivot双轴快排) @[toc] 一、快速排序思想 快速排序的思想,是找出一个中轴(pivot),之后进行左右递归进行排序,关于递归快速排序,C程序算法如下。 二、划分思想 关于划分,不同的划分决定快排的效率,下面 阅读全文
posted @ 2019-10-12 16:21 SteveYu 阅读(4220) 评论(0) 推荐(2)
摘要:``` include include include using namespace std; //归并算法 void merge(int a,int begin1, int end1, int begin2, int end2, int tmp) { //进行划分为[begin1,end1],[ 阅读全文
posted @ 2019-10-10 15:29 SteveYu 阅读(547) 评论(0) 推荐(0)
摘要:快速排序 测试代码,使用一个通用测试c++代码,代码如下 阅读全文
posted @ 2019-09-26 17:08 SteveYu 阅读(172) 评论(0) 推荐(0)
摘要:学校练习,简单的我就不放上来了,值得整理的,我保存一下 习题4 1.1.验证元素唯一性(二重循环) 1.1.1.算法描述 验证元素唯一性,主要方法是:建立两重循环,进行校验每个元素和其他元素的 1.1.2.伪代码 UniqueElements(A[0..m-1]) //验证给定数组中的元素是否唯一 阅读全文
posted @ 2019-09-12 23:03 SteveYu 阅读(1739) 评论(0) 推荐(0)
摘要:学校练习,简单的我就不放上来了,值得整理的,我保存一下 习题9 1.1. 伪随机数(线性同余法) 1.1.1.算法描述 我们使用线性同余法,来限定一些离散点在y=a*x+b上。 1.1.2.伪代码 random(n,m,seed,a,b) //根据现行同余法生成n个伪随机书的一个序列 //输入:一个 阅读全文
posted @ 2019-09-12 23:02 SteveYu 阅读(1594) 评论(0) 推荐(0)
摘要:这边防止自己忘记,附上原作者链接,前两天刷到的,看了柳神的笔记,觉得有道理,这两天突然找不到了~ https://blog.csdn.net/liuchuo/article/details/51994215 阅读全文
posted @ 2019-09-11 23:31 SteveYu 阅读(910) 评论(0) 推荐(0)
摘要:算法复杂性经常描述为递归方程,解递归方程得到算法复杂性的具体表示 用特征方程解递归方程 用生成函数解递归方程 用递推方法解递归方程 用递推方法解递归方程,也就是我们常用的数学归纳法,用生成函数解递归方程,也就是我们使用循环代替递归。 这节,我们利用高等数学的常微分方程,来进行求解递归式。 K阶常系数 阅读全文
posted @ 2019-09-05 22:37 SteveYu 阅读(1096) 评论(0) 推荐(0)
摘要:习题1 1.1. 用于计算gcd(m,n)的欧几里得算法 1.1.1. 算法描述 辗转相除法,又名欧几里得算法(Euclidean algorithm),是求最大公约数(greater common divisor)的一种,通常做法是:用较小的数去除较大的数,用第二余数再去除第一余数,最终我们可以得 阅读全文
posted @ 2019-09-03 04:32 SteveYu 阅读(1372) 评论(0) 推荐(0)