- 博客(6)
- 收藏
- 关注
原创 欧拉回路讲解
一种办法是Fluery , 即每次只找不是桥的边bfs, 当每个点和边都进队后再处理桥, 如果图不连通或者经过桥之后无法遍历整个图,则没有欧拉回路,否则就找到了欧拉回路, 由于这样实现需要先tarjan缩强连通分量后记录桥的位置,之后再每个点遍历,需要时间复杂度大约是O(n ^ 2), 太不牛,我们换下一个算法。欧拉回路是这样一个东西(个人理解) : 从图上某个点出发,每条边不能重复经过,然后从这个点开始把所有的点和边走一遍(同时满足每条边不能重复)后回到这个点。(不是这什么鬼名字也太长……
2024-10-14 21:35:48 236
原创 动态规划 背包问题
进入正题:假设有3件物品,每件物品价值分别为value[3] = { 2, 5, 6 } ,重量为 weight[3] = { 1, 3, 4 };背包的最大重量为4,我们列出如下表格:1 2 3 4123对于这个表格,横向表示背包容量,纵向表示能装入该物体和该物体以前物体的最大价值。
2023-12-11 23:19:38 946 3
原创 c语言搜索(顺序,二分,插值)
思想:先确定一个值,对于一个已经排好序的数据表进行查找,每次比较中间值与键值的大小,缩小范围得出答案。简而言之就是将数据从第一个元素向最后一个元素开始遍历,直到找到了就停止,这样的算法明显是效率较低的,但在一些简单的数据规模比较小的问题上可以使用。- 实际上,插值查找是基于二分查找的优化版本,基本原理是按照数据位置的分布,利用公式预测数据所在的位置,=Mid - 1令high = mid - 1。时间复杂度为 **O(log log n)**,是基于O( log n )下进行的二分查找.
2023-11-22 17:32:16 106
原创 c语言动态规划dp(不定时间更新)
有一个2维数组,值的大小固定,你从左上角开始出发,走到右下角,每次只能向下或向右,每次走过都会加上走过的数组的值的大小,问最优的次数是多少?假如你是一个小偷,你要去偷一条街,但是每次头的时候不能够偷相邻的两家,(每家的财富有多有少),问怎么偷才能做到所得的钱数最多?>1.当我们选择偷这家时,dp[i] = dp[i - 2] + nums[i]>2.当我们不偷这家时候,dp[i] = dp[i - 1]> 1)从i - 1 走1步(dp[i - 1])2)从i - 2 走2 步(dp[i - 2])
2023-11-22 17:21:49 128
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人