![](https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
c++
文章平均质量分 92
KRYON!
这个作者很懒,什么都没留下…
展开
-
[蓝桥杯]试题 基础练习 Huffuman树
#include<iostream>#include<vector>#include<queue>using namespace std;int main(){ int n; cin>>n; if(n < 1) { cout<<0; return 0; } priority_queue< ...原创 2020-02-28 12:56:12 · 466 阅读 · 0 评论 -
[leetcode]190. 颠倒二进制位
class Solution {public: uint32_t reverseBits(uint32_t n) { bitset<32>temp(n); //左边是低位,temp[0]是二进制的最低位 uint32_t res = 0; for(int i = 0; i < 32; i++) { ...原创 2020-02-18 22:18:12 · 88 阅读 · 0 评论 -
FloydWarshall多(所有)源点的最短路径实现(带路径打印)
一、介绍和算法原理:https://www.cs.usfca.edu/~galles/visualization/Floyd.html二、核心代码:dist[i][j]表示从i到j的最短距离,parent[i][j]表示源点为i时,j的双亲是谁,一开始我都初始化parent[i][j] = i下面的是这个算法的核心代码,这个上面图片有解释,我觉得也可以这样理解: for(int k...原创 2019-11-28 11:20:14 · 207 阅读 · 0 评论 -
Bellman_Ford边上权值为任意值的单源最短路径问题(+路径打印)边集合与邻接表两种实现
一、介绍:二、维基上的伪代码: function BellmanFord(list vertices, list edges, vertex source) ::distance[],predecessor[] // This implementation takes in a graph, represented as // lists of vertices a...原创 2019-11-30 15:12:51 · 237 阅读 · 0 评论 -
高效点的全排列算法---堆算法(跟堆排序没关系)
第一种:这是普通的实现:**#include<iostream>#include<time.h>#include<algorithm> using namespace std;//交换void swap(int arr[],int i , int j){ int temp; temp = arr[i]; arr[i] = arr[j];...原创 2019-11-23 21:06:21 · 655 阅读 · 0 评论 -
N划分成若干个奇正整数之和的分法有多少种---动态规划
N划分成若干个奇正整数之和:设f[i][j]表示将数i分成j个正奇数,g[i][j]表示将数i分成j个正偶数。因为f[i][j]表示数i分成j个正奇数,假设把这j个划分每个加个1,因为奇数减加1即为偶数,所以这j个划分都变成了正偶数,所以把i-j划分成j个正奇数对应着把i划分成j个正偶数,即:f[i-j][j] = g[i][j]同理可得:把i-j划分成j个正偶数对应着把i划分成j个正奇数,...原创 2019-11-23 19:16:11 · 1995 阅读 · 0 评论 -
最小生成树----kruskal算法代码
#include<iostream>#include<vector>#include<algorithm> using namespace std;class Subset{public: int* parent; int* rank; Subset(int n) { parent = new int[n]; rank = new...原创 2019-11-23 12:21:33 · 358 阅读 · 0 评论 -
C++ sort自定义排序
#include <iostream> // std::cout#include <algorithm> // std::sort#include <vector> // std::vectorbool myfunction (int i,int j) { return (i<j); }struct myclass {...原创 2019-11-22 20:05:29 · 349 阅读 · 0 评论 -
强连通图------(1)通过两次DFS或BFS判断是不是强连通图
一、定义:强连通图(Strongly Connected Graph)是指在有向图G中,如果对于每一对vi、vj,vi≠vj,从vi到vj和从vj到vi都存在路径,则称G是强连通图。二、判断是不是强连通图的算法:下面是Kosaraju基于DFS的简单算法,这算法对图进行了两次DFS遍历:1) 将所有顶点初始化为未访问。2)从任意顶点v开始进行图的DFS遍历。如果DFS遍历没有访问完所有顶...原创 2019-11-16 20:46:10 · 2986 阅读 · 0 评论 -
寻找无向图的关节点(Articulation Points)和判断图是否是双连通图(Biconnect Graph)
一、定义:关节点(Articulation Poinst)是指,在原本连通的图,在删除关节点及依附的边之后,图将被分割成至少两个连通分量(原本整连通的图变得不连通)。另外,没有一个关节点的连通图称为双连通图(Biconnect Graph)二、求解算法:先贴一张数据结构书(《数据结构c语言描述–殷人昆》,额,我好像免费帮他们打广告了)上的介绍最底下也写了,利用DFS树判断关节点的原则是...原创 2019-11-16 14:37:14 · 8033 阅读 · 1 评论 -
二分查找上下界
本文是通过二分法来查找在递增序列中的某个重复数上下区间(闭区间)的如:1,2,2,5,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,7,8,8,8,9中6的数组中的区间是[4,29]代码:lowerBound()找下界,upperBound()找上界,代码就一行不一样。#include<iostream>#inclu...原创 2019-11-13 17:06:20 · 564 阅读 · 0 评论 -
图(用list邻接表表示)的深度优先和广度优先(递归和非递归实现)
#include<iostream>#include<string>#include<list>#include<queue>using namespace std;class Graph{ int n; //结点个数 list<int> *adj; //邻接表public: Graph(int _n)...原创 2019-11-12 20:29:21 · 223 阅读 · 0 评论 -
图的存储--邻接矩阵和邻接表(链表实现和用vector实现)
邻接矩阵:#include<iostream>#include<vector>#include<iomanip>#include<string>using namespace std;const int maxVertices = 30; //图中顶点数目的最大值const int maxEdges = 900; ...原创 2019-11-11 20:38:48 · 394 阅读 · 1 评论 -
n皇后---一维数组解法
代码:#include<iostream>#include<cmath>using namespace std; const int n = 8;void Queen(int chess[],int k, int &sum){ bool flag; //用于标志当前布局是否可行 if(k <= n) { for(int i...原创 2019-11-10 14:51:32 · 475 阅读 · 0 评论 -
二叉查找树--插入、查找、遍历、打印、删除(重点)
查找二叉树:一、定义维基百科:https://zh.wikipedia.org/wiki/%E4%BA%8C%E5%85%83%E6%90%9C%E5%B0%8B%E6%A8%B9二、代码:1、结构体:struct Node{ int value; Node *lchild,*rchild; Node(int _value) { value = _value; lc...原创 2019-11-04 18:11:41 · 666 阅读 · 0 评论 -
C++优先队列自定义排序总结
一、优先队的使用:二、基本数据类型:priority_queue<int> q;//默认是从大到小priority_queue<int, vector<int> ,less<int> >q;//从大到小排序priority_queue<int, vector<int>, greater<int> >q...原创 2019-11-02 17:31:51 · 15471 阅读 · 1 评论 -
using namespace std;的陷阱
昨天遇到个很搞笑的问题先贴代码#include&lt;iostream&gt;void swap(int *a, int *b){ int temp = *a; *a = *b; *b = temp;}int main(){ using namespace std; int a = 9, b = 8; cout &lt;&lt; "before swap:" &lt;原创 2019-01-04 10:23:05 · 813 阅读 · 3 评论