![](https://img-blog.csdnimg.cn/20200330003934363.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
算法题解
文章平均质量分 51
分享各类题解以及常用的算法,数据结构
diadestiny
初心易得,始终难守
展开
-
spfa最短路算法(一维最短路模板和二维限制(一定时间内的最短路)模板)
1.一维最短路模板给定一个 n 个点 m 条边的有向图,图中可能存在重边和自环, 边权可能为负数。请你求出 1 号点到 n 号点的最短距离,如果无法从 1 号点走到 n 号点,则输出 impossible。数据保证不存在负权回路。输入格式第一行包含整数 n 和 m。接下来 m 行每行包含三个整数 x,y,z,表示存在一条从点 x 到点 y 的有向边,边长为 z。输出格式输出一个整数,表示 1 号点到 n 号点的最短距离。如果路径不存在,则输出 impossible。数据范原创 2021-07-11 16:56:02 · 168 阅读 · 0 评论 -
Leetcode第48场双周赛(4题)题解记录
5693.字符串中第二大的数字给你一个混合字符串 s ,请你返回 s 中 第二大 的数字,如果不存在第二大的数字,请你返回 -1 。混合字符串 由小写英文字母和数字组成。暴力,数据范围较小,利用isdigit()判断是否为数字,结合set来做即可。(学会set的rbegin()的使用)class Solution {public: int secondHighest(string s) { set<int> st; for(auto x :原创 2021-03-21 15:35:40 · 473 阅读 · 0 评论 -
一道经典的表达式求值题目(双栈、比较运算符优先级)--极简代码求解
表达式求值给定一个表达式,其中运算符仅包含 +,-,*,/(加 减 乘 整除),可能包含括号,请你求出表达式的最终值。原题链接注意:数据保证给定的表达式合法。题目保证符号 - 只作为减号出现,不会作为负号出现,例如,-1+2,(2+2)*(-(1+1)+2) 之类表达式均不会出现。题目保证表达式中所有数字均为正整数。题目保证表达式在中间计算过程以及结果中,均不超过 2^31−1。共一行,为给定表达式。输出格式共一行,为表达式的结果。数据范围表达式的长度不超过 105。原创 2021-03-20 22:45:38 · 419 阅读 · 0 评论 -
三道经典入门递归题(指数型、排列型、组合型)带你理解基本一维DFS深度优先搜索算法思想
1.递归实现指数型枚举从 1∼n 这 n 个整数中随机选取任意多个,输出所有可能的选择方案。输入格式输入一个整数 n。输出格式每行输出一种方案。同一行内的数必须升序排列,相邻两个数用恰好 1 个空格隔开。对于没有选任何数的方案,输出空行。本题有自定义校验器(SPJ),各行(不同方案)之间的顺序任意。数据范围1≤n≤15输入样例:3输出样例:322 311 31 21 2 3dfs(int a,int is) 参数a表示枚举了数字a, 参数i原创 2021-03-14 14:33:32 · 431 阅读 · 0 评论 -
算法导论:Bellman-Ford算法以及基于拓扑排序的有向无环图单源最短路径问题
1. Bellman-Ford算法实现c/c++代码如下:/**Initialize-single-source(G,s): for each vertex v in V: v.d <- OO v.p <- NIL s.d <- 0Relax(u,v): if u.d + w(u,v) < v.d: v.d <- u.d + w(u,v) v.p <- uBell原创 2021-01-27 15:59:07 · 332 阅读 · 2 评论 -
算法导论:dfs深度优先搜索算法及基于dfs的拓扑排序以及宽度优先搜索算法bfs
1.dfs深度优先搜索算法算法导论中是通过三种标记颜色来介绍dfs的,white代表还没被搜过,grey代表被搜了一些,还没结束,white表示已经搜索完成的状态。c/c++复现dfs代码#include<iostream>#include<vector>#include<stdio.h>#include<set>#define WHITE -1#define GREY 0#define BLACK 1using namesp原创 2021-01-17 22:47:14 · 525 阅读 · 0 评论 -
算法导论:并查集问题(不相交集数据结构)
1. 算法导论 – 并查集算法介绍2.c/c++代码复现/**伪代码:make-set(x): x.p<-x x.rank<-0Union(x,y): u<-Find(x) v<-Find(y) if u.rank<=v.rank then u.p = v if u.rank = v.rank then v.rank = v.rank + 1Find(x):y<-xwhile y.原创 2021-01-17 12:10:08 · 131 阅读 · 1 评论 -
算法导论:基于最小优先队列实现prim算法的伪代码复现原始版及c++的STL(priority_queue)的简易实现版
优先队列算法导论伪代码见上回:算法导论:c/c++代码复现小顶堆实现优先队列1. 算法导论prim算法伪代码复现伪代码源于算法导论build-min-heap(A): A.heapsize <- A.length for i in [A.length/2] downto 1 Min-heapify(A,i)Min-heapify(A,i): l<-2*i,r<-2i+1 min<-i if l <= A.原创 2021-01-17 11:58:06 · 2116 阅读 · 1 评论 -
算法导论:c/c++代码复现小顶堆实现优先队列
一、算法导论(大根堆以及优先队列[降序]):二、c/c++代码复现小顶堆实现优先队列:#include<iostream>#include<algorithm>using namespace std;const int MAX = 1001;const int MIN = -32767;class MyArray{public: MyArray(int size,int len,int a[MAX]):heap_size(size),leng原创 2021-01-11 13:42:18 · 451 阅读 · 0 评论 -
01背包和完全背包问题解法模板
01背包问题有 N 件物品和一个容量是 V 的背包。每件物品只能使用一次。第 i 件物品的体积是 vi,价值是 wi。求解将哪些物品装入背包,可使这些物品的总体积不超过背包容量,且总价值最大。输出最大价值。输入格式第一行两个整数,N,V用空格隔开,分别表示物品数量和背包容积。接下来有 N 行,每行两个整数 vi,wi,用空格隔开,分别表示第 ii 件物品的体积和价值。输出格式i输出一个整数,表示最大价值。数据范围0<N,V≤10000<vi,wi≤1000输入样例4原创 2020-10-03 21:51:04 · 1475 阅读 · 0 评论 -
leetcode1两数之和
1. 两数之和给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。class Solution {public: vector<int> twoSum(vector<int>& nums, int target) { unordered_map<int,int> map; f原创 2020-10-03 15:14:15 · 101 阅读 · 0 评论 -
蓝桥基础最简题解--递归法巧解分解质因数
问题描述 求出区间[a,b]中所有整数的质因数分解。输入格式 输入两个整数a,b。输出格式 每行输出一个数的分解,形如k=a1a2a3…(a1<=a2<=a3…,k也是从小到大的)(具体可看样例)样例输入3 10样例输出3=34=225=56=237=78=2229=3310=25数据规模和约定2<=a<=b<=10000题...原创 2020-03-30 22:11:10 · 426 阅读 · 0 评论 -
蓝桥简洁题解--一串超长的十六进制字符串如何转化成八进制?
问题描述给定n个十六进制正整数,输出它们对应的八进制数。蓝桥练习原题出处输入格式输入的第一行为一个正整数n (1<=n<=10)。接下来n行,每行一个由0-9、大写字母A-F组成的字符串,表示要转换的十六进制正整数,每个十六进制数长度不超过100000。输出格式输出n行,每行为输入对应的八进制正整数。【注意】 输入的十六进制数不会有前导0,比如012A。 输出的...原创 2020-03-30 14:17:16 · 244 阅读 · 0 评论 -
c++的bitset用法巧解n位01字串问题
1.问题描述对于长度为5位的一个01串,每一位都可能是0或1,一共有32种可能。它们的前几个是:0000000001000100001100100请按从小到大的顺序输出这32种01串。2.bitset题解省去一般的模拟暴力解法,说一下c++的bitset巧解做法#include<bitset> 引入即可举例:bitset<4> bitset1; /...原创 2020-03-23 23:53:25 · 600 阅读 · 0 评论 -
蓝桥最简题解--图解高精度乘法模拟:输入一个正整数n,输出n!的值。其中n!=1*2*3*…*n。
1.问题描述 输入一个正整数n,输出n!的值。 其中n!=123*…*n。2.算法描述n!可能很大,而计算机能表示的整数范围有限,需要使用高精度计算的方法。使用一个数组A来表示一个大整数a,A[0]表示a的个位,A[1]表示a的十位,依次类推。将a乘以一个整数k变为将数组A的每一个元素都乘以k,请注意处理相应的进位。首先将a设为1,然后乘2,乘3,当乘到n时,即得到了n!的值。 ...原创 2020-03-23 23:18:30 · 4848 阅读 · 1 评论 -
c/c++实现简单线性回归问题(机器学习入门实例)
线性回归问题简单分析个人简单分析,有问题欢迎评论讨论如果给出很多组数据(x,y),求拟合一条y=wx+b直线模拟问题,高中数学也有提到过,就是求w,b两个参数,使得拟合的直线可以近似穿过目标数据区域的中间位置,尽可以使得更多的真实数据点落在拟合的直线上。这个问题常常出现在机器学习,深度学习的入门教程的前几个例子中,然而无奈网上教程都是用机器学习常用的python进行实现,作为一个习惯c/c...原创 2020-03-15 17:22:22 · 1561 阅读 · 1 评论 -
第十一届蓝桥杯校内模拟赛题解(2020.3.13)
个人小练习记录,答案若出错欢迎指正1.在计算机存储中,15.125GB是多少MB?15488(15.125*1024)2.1200000有多少个约数(只计算正约数)96(循环跑一下即可)3. 一棵包含有2019个结点的树,最多包含多少个叶结点?1010(题目指的应该是二叉树,不然就2018个了,利用叶节点数=度为2的节点数+1的性质简单计算)4.在1至2019中,有多少...原创 2020-03-13 22:01:20 · 2286 阅读 · 0 评论 -
2019-9 ccf csp认证考试第五题城市规划题目详解
2019-9 ccf csp认证考试第五题城市规划详解2019年ccf城市规划题解1. 题目描述2. 设计方案3. 具体实现 (以java为示例,下文附带c++代码)4.算法效率分析5.算法附加功能5.算法测试6.系统小结7.java源代码8.c++源代码2019年ccf城市规划题解1. 题目描述2. 设计方案由题意抽象出数据结构:一颗无向树,N个节点,N-1条边,任意两个节点都是连通...原创 2019-12-11 21:55:21 · 3797 阅读 · 7 评论