
算法笔记
如风的少年-
这个作者很懒,什么都没留下…
展开
-
大整数运算(加减乘除)
利用字符串来模拟大整数的加减乘除原创 2022-05-11 21:36:22 · 940 阅读 · 0 评论 -
Bellman-Ford算法求带负权图
853. 有边数限制的最短路#include <iostream>#include <cstring>#include <algorithm>using namespace std;const int N = 510, M = 10010, INF = 0x3f3f3f3f;struct Edge{ int u, v, w;}edges[M];int n, m, k, dist[N], backup[N];void BellmanFord(.原创 2022-04-07 22:18:25 · 139 阅读 · 0 评论 -
Dijkstra算法进阶
Dijkstra算法题目中可能有两条或者以上可以达到最短距离的路径,题目中会给一个第二标尺(第一标尺是距离),要求在所有最短路径中寻找第二标尺最优的路径。常见的第二标尺:(1)给每条边在增加一个边权(比如说花费),然后要求在最短路径有多条时,要求路径的花费之和最小(如果边权是其他含义,那么也可以是最大)(2)给每个顶点增加一个点权(例如每个曾是能收集到的物资),然后在最短路径有多条时,要求路径上结点的权值之和最大(最小)(3)直接问有多少条最短路径1、新增边权cost[u][v]表示u->原创 2022-04-07 14:51:42 · 170 阅读 · 0 评论 -
N皇后三种解法
N皇后1、DFSclass Solution {private: int n; static const int N = 20; int row[N] = {0}, col[N] = {0}, dg[2*N] = {0}, udg[2*N] = {0}; int mat[N][N]; vector<vector<string>> res;public: vector<vector<string>> s原创 2022-04-04 19:53:52 · 458 阅读 · 0 评论 -
质数和质因子分解
一、质数质数不能被除1和本身之外的任何数整除,否则称为合数。2是最小的质数,1既不是质数又不是合数1、质数判断bool isPrime(int n){ for (int i = 2; i <= n/i; i++){ //i*i可能会导致int型溢出 if (n%i == 0) return false; } return true; }2、使用埃式筛法选取质数,来选取1-n之间的质数vect原创 2022-04-01 21:33:55 · 448 阅读 · 0 评论 -
6.1 vector的常用解法
6.1 vector的常用解法详解vector,翻译为向量,但在C++中实际上是一种变长数组(长度可以根据需要来自动改变的数组)#include <vector>using namespace std;1、vector的定义vector<typename> name;(1)一维数组vector<int> nums(n, 0)//将nums设置为大小为n的数组,并且数组中的值都为0(2)二维数组vector<vector<int>原创 2022-02-20 21:05:14 · 431 阅读 · 0 评论 -
6.2 set常用解法详解
set翻译为集合,是一个内部自动排序且不含重复元素的容器#include <set>using namespace std;##1、set的定义set<typename> name;## 2、set容器内元素的访问set只能通过迭代器进行访问set<typename> ::iterator it 等价于 auto itfor (auto it = st.begin(); it != st.end(); it++){ cout&...原创 2022-02-21 15:17:33 · 464 阅读 · 0 评论 -
6.3 String的常用解法详解
在C语言中,使用char[]数组来存储字符串,但操作起来比较麻烦C++中的STL加入了String类#include <string> 注意和#inlucde <cstring>不同using namespace std;1、string的定义string str;string str = "abcdefg";2、string中内容的访问(1)、通过下标进行访问for (int i = 0; i < str.size(); i++) cout<&l原创 2022-02-21 15:33:04 · 319 阅读 · 0 评论 -
6.4 map的常用用法详解
map,翻译为映射,也是常用的STL容器。map可以将任何基本类型(包括STL容器)映射到任何基本类型(包括STL容器)#include <map>using namespace std;1、map的定义map<typename1, typename2> mp; 键的类型 值的类型map<string, int> mp;map<set<int>, int> mp;2、map容器内元素的访问(1)、通过下标进行访问原创 2022-02-21 22:16:38 · 301 阅读 · 0 评论 -
6.5 queue的常用解法详解
queue翻译为队列,在STL中则是实现了一个先进先出的容器1、queue的定义#include<queue>using namespace std; queue<typename> name;2、queue容器内元素的访问由于queue是一种先进先出的限制性数据结构,因此在queue中只能通过front来访问队首元素,back来访问队尾元素3、queue常用函数解析(1)push()push(x) //将x入队,时间复杂度O(1)(2)front()、原创 2022-02-21 15:24:21 · 543 阅读 · 0 评论 -
6.6 priority_queue的常用解法详解
priority_queue又称为优先队列,其底层是用堆(heap)来实现的在优先队列中,队首元素是当前队列中优先级最高的一个1、priority_queue的定义#include <queue> using namespace std;queue<typename> name;2、priority_queue容器内元素的访问和队列不一样,优先队列没有front()、back()函数,只能通过top()函数来访问队首元素(堆顶元素),也就是优先级最高的元素3、p原创 2022-02-21 15:27:24 · 333 阅读 · 0 评论 -
6.7 stack的常用解法详解
stack,翻译为栈,是STL中一个后进先出的容器1、stack的定义#include using namespace std;stack name;2、stack容器内元素的访问由于stack本身就是一种后进先出的数据结构,在STL的stack中只能通过top()来访问栈顶元素3、stack常用函数实例解析(1)push()push(x),将x入栈,时间复杂度O(1)(2)top()top()访问栈顶元素,时间复杂度O(1)(3)pop()pop()可以弹出栈顶元素,时间复杂度原创 2022-02-21 22:20:01 · 191 阅读 · 0 评论 -
6.8 pair的常用解法详解
pair将两个元素绑定在一起合成一个元素1、pair的定义#include using namespace std;pair<typename1, typename2> name;pari初始化1)、pair<string, int> p(“hello word”, 1);2)、make_pair(“hello word”, 1)2、pair中元素的访问pair中只有两个元素,分别是first和second,只需按照正常接结构体的方式访问即可3、pair常用函原创 2022-02-21 22:21:50 · 247 阅读 · 0 评论