![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Algorithm
eyedeng
https://github.com/eyedeng
展开
-
图
《Data Structures and Algorithm Analysis in C》(数据结构与算法分析 C语言描述) 目录拓扑排序 拓扑排序 条件:无圈。顶点v的入度定义为边(u, v)的条数。步骤: 找出任意没有入边(入度为零)的顶点,显示改点,删除它和它的边。 重复步骤1直到图为空。 复杂度O(|E| + |V|)。 void topo_sort(unordered_map<string, vector<string>> graph,原创 2020-09-22 19:28:08 · 156 阅读 · 2 评论 -
栈&队列
链表实现 #include <stdio.h> #include <stdlib.h> #include <iostream> using namespace std; /* 链式stack header --> 栈顶 --> ... 缺点:malloc,free开销大 */ typedef int element_type; struct Node { element_type element; Node *next原创 2020-06-17 22:55:12 · 90 阅读 · 0 评论 -
链表
《Data Structures and Algorithm Analysis in C》(数据结构与算法分析 C语言描述) #include <stdio.h> #include <stdlib.h> #include <iostream> using namespace std; /* 带头节点header的链表 header --> first_node --> ... */ typedef int element_type; stru原创 2020-06-05 12:08:00 · 104 阅读 · 0 评论 -
《算法图解》7,9章
迪杰斯特拉算法 适用:无负权边、有向无环图。 step example code #include <bits/stdc++.h> using namespace std; struct Node { int v; // 顶点 int w; // 权重 Node(int v_, int w_) { v = v_; w = w_; } }; const int N = 6; string things[] = {"music", "record", "poster", "g原创 2020-05-28 05:55:08 · 112 阅读 · 0 评论 -
位运算
一些常用的位运算小技巧。 32位int物理存储: int n = 19; // 0x00000013 0b 0000 0000 0000 0000 0000 0000 0001 0011 : 2^4 + 2^1 + 2^0 : 19 0x 0 0 0 0 0 0 1 3 : 1*16^1 + 3*16^0 : 19 int n = -1...原创 2020-04-22 23:02:39 · 95 阅读 · 0 评论 -
归并排序
归并排序 #include <bits/stdc++.h> using namespace std; #define M 1000 void Merge(int *arr,int l,int mid,int r,int *temp) { int iL = l,iR = mid; int jL = mid+1,jR = r; int cnt = 0; ...原创 2019-11-02 21:28:00 · 111 阅读 · 0 评论 -
排序问题1
VisuAIgo算法可视化 参考1 常见排序算法pdf 参考2 十大排序算法 选择排序 void selection_sort(int a[], int len) { for(int i=0; i<len-1; i++) { int min_i = i; for(int j=i+1; j<len; j++) // 遍历未排序元素 ...原创 2019-10-16 18:02:12 · 110 阅读 · 0 评论 -
二分查找
二分查找(二分搜索,折半查找,binary search):在有序 数组(两个条件)中查找某一特定元素。搜索过程从数组的中间元素开始,如果中间元素正好是要查找的元素,则搜索过程结束;如果某一特定元素大于或者小于中间元素,则在数组大于或小于中间元素的那一半中查找,而且跟开始一样从中间元素开始比较。如果在某一步骤数组为空,则代表找不到。 实现 迭代。时间复杂度:O(log n),空间复杂度:O(1...原创 2019-10-09 00:37:41 · 125 阅读 · 0 评论 -
BUA-2019-招新
挑选苹果 首先将第一颗苹果放入口袋中。 从第二颗苹果开始检查,如果正在检查的苹果比口袋中的还大,则将它捡起放入口袋中,同时丢掉原先口袋中的苹果。反之则继续下一颗苹果。直到最后一颗苹果。 最后口袋中的苹果就是所有的苹果中最大的一颗。 求最大值 抓牌 从第一个元素开始,该元素可以认为已经被排序 取出下一个元素,在已经排序的元素序列中从后向前扫描 如果该元素(已排序)大于新元素,将该元素移到下一位...原创 2019-09-07 21:03:49 · 114 阅读 · 0 评论 -
Maximum Length of Repeated Subarray
Maximum Length of Repeated Subarray Input: A: [1,2,3,2,1] B: [3,2,1,4,7] Output: 3 Explanation: The repeated subarray with maximum length is [3, 2, 1]. 二维DP -> 制表 初始化 (其余空为0) B\A 1 2 3 2 1 ...原创 2019-07-09 21:44:29 · 156 阅读 · 0 评论 -
dijkstra
可以把此算法理解为模仿打结的绳,从桌面提起。对每个结,计算机必须知道1.有几段绳连着。2.每段多长。还必须保存一个表dist,存放起点到每个节点估计距离。距离dist[v]:从起点到v,只经过_垂悬_结的最短连线长度。 所有结都在等待,所有d[v] = ∞,只有d[起点] = 0 while 有等待的结 do v := 最小dist[v]的等待结 把v提起 for 从v到u长度为l的所有的绳...原创 2019-07-13 10:02:59 · 98 阅读 · 0 评论 -
通配符 DP
通配符算法 DP通配符命令行应用DP算法实现问题描述“*”是个问题代码1记忆化DP 制表参考 通配符 通配符可用于代替单个或多个字符 。通常地,星号*匹配0个或以上的字符,问号?匹配1个字符。 命令行应用 dengy Test $ ls 1001.cpp 1001.exe* 1002.cpp 1002.exe* f1 f10 f100 f2 f20 f3 f5 dengy ...原创 2019-07-02 15:55:43 · 220 阅读 · 0 评论