
数据结构与算法
此专栏分享一些我刷的算法题,主要是会包括找工作过程中会遇见比较多的
亚里随笔
某巴LLM/RLHF算法工程师
量化交易 | LLM最前线
一起学习、共同成长
IP:「亚里随笔」
欢迎关注交流
整理了LLM、量化投资、机器学习方向的学习资料,关注同名公众号 「 亚里随笔」即刻免费解锁
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
算法导论第六章堆排序算法实现
#include using namespace std; using namespace std; const int maxn = 10010; #define PARENT(i) i/2 #define LEFT(i) i #define RIGHT(i) (i int heap[maxn]; int hsize = 0; int n; v原创 2017-06-10 14:22:17 · 392 阅读 · 0 评论 -
图的邻接表表示中删除冗余边
#include #include using namespace std; const int maxn = 1000 + 10; struct Node { int to; }; vector edge[maxn], edgep[maxn]; int main() { freopen("input.txt", "r", stdin);原创 2017-03-02 19:39:15 · 1954 阅读 · 0 评论 -
图的静态前向星表示中的转置问题
#include #include using namespace std; const int maxn = 1000 + 10; int head[maxn],head2[maxn]; struct EdgeNode { int to; int w; int next; }; EdgeNode Edge2[maxn],Edge[maxn]; int原创 2017-03-02 19:14:21 · 328 阅读 · 0 评论 -
图的静态前向星表示中统计入度和出度
#include #include using namespace std; const int maxn = 1000 + 10; int head[maxn]; int indegree[maxn], outdegree[maxn]; struct EdgeNode { int to; int w; int next; }; EdgeNode Edge[m原创 2017-03-02 18:53:24 · 468 阅读 · 0 评论 -
古代象形符号,Ancient Messages,UVA1103
题目链接:https://vjudge.net/problem/UVA-1103 题解:通过观察题目,所给的几个象形符号可以由每个图像所包围产生的洞洞来确定,统计dfs对图中的块进行染色,然后再统计每个图中的所包围的块数,其中比较坑的是将十六进制转为二进制以后,坐标会发生变化,然后会导致各种错误,我仔细改了好久才AC的。 代码: #include<iostream> #incl...原创 2018-10-22 00:06:16 · 604 阅读 · 0 评论 -
油田,Oil Deposits,UVA572
题目链接:https://vjudge.net/problem/UVA-572 题解:这题的问题就是求八连通块的个数(横竖或对角线方向),使用一个visit数组记录有没有访问过,然后直接dfs就可以求得结果。 代码: #include<iostream> #include<memory> #include<cstdio> #include<cst...原创 2018-10-17 00:07:56 · 258 阅读 · 0 评论 -
下落的树叶,The Falling Leaves,UVA699
题目链接:https://vjudge.net/problem/UVA-699 题解:按题目要求读入数据的过程中,进行求和的计算,我在最开始的时候,想着用建树的方法来做,最后建树的过程中写错了,所以参考了一下书中代码。 代码: #include<iostream> #include<cstring> #include<cstdio> #include&l...原创 2018-10-16 00:22:19 · 324 阅读 · 0 评论 -
天平,Not so Mobile,UVA839
题目链接:https://vjudge.net/problem/UVA-839 题解:仔细读懂题目之后,会发现,本题就是使用递归求解计算WL*DL==WR*DR,解题过程中,递归函数的引用参数非常有意思。以后可以借鉴。 代码: #include<iostream> using namespace std; bool solve(int &w) { int WL...原创 2018-09-26 00:18:05 · 340 阅读 · 0 评论 -
树,Tree,UVA 548
题目链接:https://vjudge.net/problem/UVA-548 题解:这题是一道典型的二叉树数据结构题,核心在于,由二叉树的中序和后序遍历求先序遍历。解题的方法是,递归地先由后序遍历获得根结点,然后建立左子树和右子树,最后进行先序遍历,再按题目要求对先充遍历进行操作,输出结果。 代码: #include<iostream> #include<cstdio&...原创 2018-09-20 01:31:31 · 302 阅读 · 0 评论 -
树的层次遍历,Trees on the level, UVA 122
题目链接:https://vjudge.net/problem/UVA-122 题解:题意就是按题目要求建立二叉树,然后进行BFS,我在uDebug上进行了测试,都通过了,但是仍然没法通过vjudge上的测试例,找不到问题在哪儿?希望有大神能帮助看看,多谢,多谢。 代码:(注意没有AC) #include<iostream> #include<cstdio> #in...原创 2018-09-19 23:16:24 · 285 阅读 · 0 评论 -
小球下落,Dropping Balls,UVA 679
题目链接:https://vjudge.net/problem/UVA-679 题解:这题读完以后很明显的思路是用一个数组来模拟小球掉落的过程,但是通过极限分析的话,时间根本不能满足要求。因此需要另外寻求规律来解题。在对题目进行深入的理解之后,只需根据小球的奇偶性就可以确定它最终会落到哪棵子树中了【参考了书中代码】,这也体现在对题目深入建模的重要性。 代码: #include<ios...原创 2018-09-14 08:41:20 · 255 阅读 · 0 评论 -
移动盒子,Boxes in a Line,UVA 12657
题目链接:https://vjudge.net/problem/UVA-12657 题解:这一题的题意是有一行从1到n编号的盒子,按给定的4种指令对盒子进行操作,最后输出奇数位置上的盒子编号的和。解题的数据结构选择双向链表,增加头尾指针用作标注,另外使用一个pos数组记录每个盒子的指针位置,方便直接取得盒子指针。最后根据题意按指令对盒子进行模拟操作。我在这一题中使用的是自己写的指针链表,对指针之...原创 2018-09-12 14:17:33 · 362 阅读 · 0 评论 -
UVA11988 Broken Keyboard 破损的键盘
题目链接:https://vjudge.net/problem/UVA-11988 题解:很明显,不能直接使用数组进行插入,因为普通的数组在头插入时效率非常低。所以本题实现的存储模型应选择链表。书中提供的是使用数据模拟链表的一种方法,我还没有掌握,就直接写了一个链表。特别注意,end指针必须要在插入时进行记录,如果在‘]’的时候再遍历到最后一个,仍然会超时。 代码: #include<...原创 2018-09-09 14:27:47 · 351 阅读 · 0 评论 -
UVA 442 Matrix Chain Multiplication 矩阵链乘
题目链接:https://vjudge.net/problem/UVA-442 题解:本题的关键是利用栈解析矩阵表达式。在求解的过程中,需要注意矩阵乘法的计算方法,行列要求,然后扫描输入表达式即可。 代码: #include<iostream> #include<vector> #include<stack> #include<cstdio>...原创 2018-09-09 13:15:00 · 274 阅读 · 0 评论 -
铁轨(Rails, UVA514)
题目链接:https://vjudge.net/problem/UVA-514 读过题目之后,很明显可以知道这是一道用栈来解决问题的题,关键在于栈的使用方法上。问题求解的是将1...N的数,进栈或出栈,能否得到给定的1至N的一个排列。 很明显,题目只要求能否得到这样一个序列,所以没有必要把所有的进栈出栈的可能都列出来一一比较。分析题目可以发现一个规律:按顺序扫描给定的排列,如果当前数字和栈顶数...原创 2018-09-09 00:20:41 · 466 阅读 · 0 评论 -
并行程序模拟(Concurrency Simulator, UVA 210)
题目链接:https://vjudge.net/problem/UVA-210 这一题给我的感觉是,难度并不是很大,但难点在于理解题目,读懂题目之后将题目里描述的规则用代码写出来就行了。 核心有两点:一是维护ready queue和block queue;二是根据题目对模拟规则的描述进行各个statement执行的实现。 在ac之后,我看了一个lrj书中提供的代码,整体方法是一致...原创 2018-09-09 00:08:16 · 681 阅读 · 0 评论