
算法
文章平均质量分 70
三省本心
stay hungry stay foolish
展开
-
实现并查集和DFS的一些有趣方法
一、实现并查集的简洁写法大佬的有趣解释int lead(int x)//{ if(leader[x]==x) return x; else return leader[x]=lead(leader[x]); //把路径上所有点都纠正}int link(int x,int y){ if(leader[x]!=leader[y]) { leader[lead(x)]=lead(y); }}leader[]表示直属上级link()实现了两个互不原创 2021-02-28 19:53:16 · 246 阅读 · 0 评论 -
2021-02-21
做题总结7-6 考试座位号7-7 重排链表7-13斐波那契数列7-6 考试座位号题目网址输入样例:43310120150912233 2 43310120150912119 4 13310120150912126 1 33310120150912002 3 223 4输出样例:3310120150912002 23310120150912119 1解决方案:由题目可以发现,只需通过建立映射关系知晓测试机号的对应ID和考试位置即可,于是,我们采用map给予解决代码#i原创 2021-02-21 18:32:23 · 206 阅读 · 0 评论 -
算法:Floyd判圈算法
Floyd判圈算法(Floyd Cycle Detection Algorithm),又称龟兔赛跑算法(Tortoise and Hare Algorithm),是一个可以在有限状态机、迭代函数或者链表上判断是否存在环,求出该环的起点与长度的算法。该算法据高德纳称由美国科学家罗伯特·弗洛伊德发明...原创 2021-02-08 20:17:48 · 901 阅读 · 2 评论 -
洛谷数据结构1-1笔记
文章目录1.2 寄包柜问题解决方法一:vector不定长数组方法二 使用map方法三 使用数组直接表示和压缩1-3 后缀表达式(初阶)1-4 约瑟夫问题(初阶及进阶教学)解法拓展思维1.2 寄包柜问题分析:由题目可知,不仅柜子的编号是离散的,而且箱子的数目和编号还不确定,如果都以开辟数组的形式实现,将会耗费大量空间。因此,(自行脑补每个柜子的情况)其实是一个稀疏的存储模型。对于该题,我们可以有使用vector不定长数组或者map来实现,或者更好的情况下,利用一下数组自身的压缩能力实现。解决方法一:原创 2021-02-07 22:37:44 · 310 阅读 · 1 评论 -
C++全排列的实现方法
方法分类法一:使用next permutation法二:使用简单DFS法一:使用next permutation#include<iostream>#include<string>#include<vector>#include<algorithm>using namespace std;int main(){ vector<char> seq; string s; cin>>s; seq原创 2021-01-29 19:57:03 · 4834 阅读 · 0 评论