算法
文章平均质量分 50
kkzz1x
真.新手起步
Java + CPP + Rust(新人),计算机科学热爱者
展开
-
最短路问题模版总结(Dijkstra/BF/SPFA/Floyd)
文章目录AcWing 849. Dijkstra求最短路 IAcWing 850. Dijkstra求最短路 IIAcWing 853. 有边数限制的最短路AcWing 851. spfa求最短路AcWing 852. spfa判断负环AcWing 854. Floyd求最短路以下的模版题都是求从1到n的最短路AcWing 849. Dijkstra求最短路 I朴素写法邻接矩阵表示,注意重边。重边处理:留下最小的即可#include<bits/stdc++.h>using n原创 2022-03-25 22:09:40 · 615 阅读 · 0 评论 -
2022-2-16 AcWing LIS模型(187 LIS+DFS)
AcWing1014. 登山先上后下的类型#include<bits/stdc++.h>using namespace std;const int N=1000;int main(){ int n,h[N]; scanf("%d",&n); for(int i=0;i<n;i++){ scanf("%d",&h[i]); } int f[N],g[N]; for(int i=0;i<n;i++)原创 2022-02-17 13:43:36 · 428 阅读 · 0 评论 -
PAT A1064 Complete Binary Search Tree+A1099Build a BST(二叉搜索树遍历和建立)
文章目录A1064 Complete Binary Search TreeA1099 Build A Binary Search TreeA1064 Complete Binary Search Tree这题的建树方式是直接数组,tree[maxn]因为在题目里已经明确需要一颗完全二叉树。NOTE遇到完全二叉树,应该先想到最简单的建树方式,那就是数组表示数,root=1,左子树parent2 右子树parent2+1数组的下标表示结点序号,数组的内容也就是结点的内容(数字) 这两个也原创 2021-08-15 23:28:36 · 87 阅读 · 0 评论 -
2021-08-05算法学习(算法笔记319-327 439-442)
文章目录一、有向无环图的最长/短路一、有向无环图的最长/短路在这里插入代码片原创 2021-08-06 00:32:19 · 74 阅读 · 0 评论 -
2021-8-4算法学习(算法笔记425-438)
文章目录一、动态规划递归写法二、动态规划递推写法三、最大连续子序列和四、最长不下降子序列(LIS)五、最长公共子序列 LCS六、最长回文子串一、动态规划递归写法以斐波那契数列为例自顶向下!#include<bits/stdc++.h>using namespace std;const int maxn=1000;int dp[maxn]; //并令dp[]==-1 表示还未被计算过int F(int n){ if(n==0||n==1) return 1; if原创 2021-08-04 23:48:54 · 103 阅读 · 1 评论 -
2021-8-3算法学习(算法笔记409-423)
文章目录一、最小生成树——prim算法二、最小生成树——kruskal算法三、拓扑排序四、关键路径(AOE网)一、最小生成树——prim算法prim算法和之前的Dijkstra算法几乎一样主要差别在于:1. d[ ]数组的含义不同:在prim算法中指的是一点到集合S的距离2. 看情况要加一个ans来存放最小生成树的边权之和#include <bits/stdc++.h>using namespace std;const int maxn = 100;const int INF =原创 2021-08-04 00:47:33 · 91 阅读 · 0 评论 -
2021-8-2算法学习(算法笔记391-406)
文章目录一、Bellman-Ford算法二、Floyd算法——解决全源最短路问题三、最小生成树——prim算法一、Bellman-Ford算法#include<bits/stdc++.h>using namespace std;const int maxv=100;const int INF=1000000;struct Node{ int v,dis;};int n;vector<Node> Adj[maxv];int d[maxv];set<原创 2021-08-03 00:04:40 · 95 阅读 · 0 评论 -
2021-8-1算法学习(算法笔记367-391)
文章目录Dijkstra算法邻接矩阵邻接表Dijkstra算法邻接矩阵#include<bits/stdc++.h>using namespace std;const int maxv=1000;const int INF=1000000;int n,m,s,G[maxv][maxv];// n个顶点 m条边 s起点int d[maxv];bool vis[maxv]={false};void Dijkstra(int s)//s为起点{ fill(d,d+max原创 2021-08-01 17:54:52 · 198 阅读 · 0 评论 -
2021-07-31算法学习(算法笔记335-363)
文章目录一、堆二、哈夫曼树带权路径长度 WPL哈夫曼编码二、图的存储1. 邻接矩阵2. 邻接表三、图的遍历DFSBFS一、堆掌握堆的向下调整and向上调整#include <bits/stdc++.h>using namespace std;const int maxn=100;int heap[maxn];void downAdjust(int low, int high) //调整为最大堆 low为欲调整结点的数组下标 high一般为堆的最后一个元素的数组下标{ in原创 2021-07-31 22:49:14 · 253 阅读 · 0 评论 -
2021-7-30算法学习(算法笔记310-319 328-334)
文章目录一、二叉查找树(BST)PATA1043 Is it a Binary Search Tree二、并查集例题:好朋友一、二叉查找树(BST)#include<bits/stdc++.h>using namespace std;typedef struct node* Bintree;struct node{ int data; Bintree left; Bintree right;};void search(Bintree BST,int x原创 2021-07-31 00:06:28 · 121 阅读 · 0 评论 -
2021-07-26算法学习(算法笔记289-305)
文章目录一、二叉树遍历一、二叉树遍历原创 2021-07-26 22:50:48 · 82 阅读 · 0 评论 -
2021-7-25算法学习(算法笔记269-282)
文章目录一、DFS一个背包问题二、BFS一、DFS首先推荐一篇文章,深度优先遍历的8个简单小例题介绍了DFS的一些经典例题一个背包问题有n件物品,每件物品的重量为w[i],价值为c[i]。现需要选出若干物品装入一个容量为V的背包中,使得在选入背包的物品重量和不超过容量V的前提下,让背包中物品的价值之和最大,求最大价值(1<=n<=20)二、BFS...原创 2021-07-25 19:08:12 · 93 阅读 · 0 评论 -
2021-7-24算法学习(算法笔记253-268)
文章目录一、链表一、链表动态链表:可看blog的数据结构专题#include<stdio.h>#include<stdlib.h>typedef struct node *Node;struct node{ int data; Node next;};Node create(int Array[]){ Node head,p,pre; head=(node*)malloc(sizeof(node)); head-&原创 2021-07-24 15:34:25 · 97 阅读 · 2 评论 -
2021-7-23算法学习(算法笔记181-186 242-250)
出去暑实停更了5天回来继续。文章目录一、n!中有多少个质因子p二、组合数计算三、STL:lower_bound() 和 upper_bound()四、中缀表达式计算一、n!中有多少个质因子p可以应用于求n!的末尾0的数量#include<stdio.h>//计算1-n中每个数都有多少个质因子p?int cal(int n,int p){ int cnt=0; int i; for(i=2;i<=n;i++) { int temp原创 2021-07-23 22:15:25 · 137 阅读 · 0 评论 -
2021-7-17算法学习(算法笔记170-175 191-229)
文章目录一、STL: priority_queue二、STL: map三、大整数运算一、STL: priority_queuepriority_queue<int, vector<int>, greater<int>> q1; 最小堆priority_queue<int, vector<int>, less<int>> q2;最大堆priority_queue<int> q; 默认为最大堆结构体的优先级设置:利用原创 2021-07-17 22:29:41 · 124 阅读 · 0 评论 -
2021-7-15算法学习 (算法笔记165-169)
文章目录一、C++函数引用传递二、质因子分解一、C++函数引用传递& 是取地址符号也就是说,函数形参的改变,也会影响到实参的改变引用传递是一种方便的传值方式函数可以直接修改到实参的值这让我也想到[指针传递] 这篇文章中的例子举得相当好(https://blog.csdn.net/weixin_42167759/article/details/89198245)如只是使用该数据,则把改值直接传递给函数,直接做函数的参数即可;若需要在函数中对该数据进行更改,则需要把改值的地址当做函数原创 2021-07-15 23:35:33 · 92 阅读 · 0 评论 -
2021-7-14算法学习(算法笔记152-163)
文章目录一、简单数学 PATB1019二、最大公因数和最小公倍数一、简单数学 PATB1019PATB1019注意点:一个是输出格式,均为4位整数,最高位补0,此时的技巧是利用printf的格式化输出 %04d另一个还是输出格式,仔细看PAT的样例,存在空格#include<stdio.h>#include<algorithm>using namespace std;bool cmp(int a,int b){ return a>b;}voi原创 2021-07-14 15:01:56 · 102 阅读 · 0 评论 -
2021-7-13算法复习(算法笔记119-141)
文章目录一、区间贪心二、二分法(二分查找)三、二分法(函数零点、求近似值、装水问题)四、快速幂五、二路归并排序一、区间贪心解决区间不相交问题,给出N个开区间(x,y),从中选择尽可能多的开区间,使得这些开区间两两没有交集思路:根据左端点从大到小排序,优先选择左端点最大的那个区间#include<stdio.h>#include<math.h>#include<algorithm>const int maxn=100;using namespace std;原创 2021-07-13 17:52:55 · 70 阅读 · 0 评论 -
2021-7-12算法复习(算法笔记111-117)
文章目录一、排序STL二、全排列的递归解法三、利用全排列解决n皇后问题(暴力)四、利用全排列解决n皇后问题(回溯)一、排序STL#include <string.h>#include <algorithm>using namespace std;struct Student{ int id; char name[10]; int score;};bool cmp(Student a, Student b){ if (a.score原创 2021-07-12 23:30:33 · 79 阅读 · 0 评论 -
KMP算法
我这里直接用了c++的string类,一些介绍看前面的博文预备知识: string类输入输出#include<string>#include<iostream>using namespace std;int main(){ string s1,s2; getline(cin,s1); getline(cin,s2); printf("%s\n",s1....原创 2020-04-28 15:57:03 · 178 阅读 · 0 评论 -
基础算法:最大子序列的和
来源PTA给定K个整数组成的序列{ N1 , N2 , …, NK },“连续子列”被定义为{Ni , Ni+1 , …, Nj },其中 1≤i≤j≤K。“最大子列和”则被定义为所有连续子列元素的和中最大者。例如给定序列{ -2, 11, -4, 13, -5, -2 },其连续子列{ 11, -4, 13 }有最大的和20。现要求你编写程序,计算给定整...原创 2019-12-18 19:21:17 · 196 阅读 · 0 评论 -
基础算法:选择排序
发现前面一篇有误,自己写了2个选择排序//选择排序 对n个数进行排序void sort1(int n,int a[]) {int i,j,k,t;for(i=n-1;i>0;i--) //方案1 把最大的先放到底下去 { k=i; for(j=0;j<n-1;j++) { if(a[j]>a[k]) k=j; } //a[k]与a[i]交换 t=a...原创 2019-12-18 19:18:21 · 124 阅读 · 0 评论