算法
文章平均质量分 62
又秃又弱
博客主要记录和分享本人学习,请斟酌帖子,勿一味的输入知识
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
算法题 | GESP | 小杨的储蓄
题源:洛谷原创 2025-04-07 15:49:22 · 414 阅读 · 0 评论 -
算法题 | 蓝桥杯 :田忌赛马
此时说明,我们的最慢的马已经无法赢任何马,,说明我们的最慢的马比田忌最慢的马还慢,无法赢任何马。与其让它去输给田忌最慢的马,不如让它去输给田忌最快的马,这样还能让田忌最快的马被消耗掉。相当于用最差的马换掉对方最强的马,保留我们的中等马去赢田忌的中等马。举例说明[1, 3, 5][2, 4, 6]😊5<6 (不能赢)1<2 (不能赢)此时会拿我们的1和田忌的6比较,用1消耗掉6,最终3就可以PK掉田忌的2[3, 5][2, 4]最终 5>4 3>2 胜2场✅5<6 (不能赢)原创 2025-04-06 13:39:22 · 734 阅读 · 0 评论 -
前缀和算法 | 洛谷 P1387 最大正方形
最大正方形## 题目描述在一个 $n\times m$ 的只包含 0 和 1 的矩阵里找出一个不包含 $0$ 的最大正方形,输出边长。## 输入格式输入文件第一行为两个整数 $n,m(1\leq n,m\leq 100)$,接下来 $n$ 行,每行 $m$ 个数字,用空格隔开,$0$ 或 $1$。## 输出格式一个整数,最大正方形的边长。## 样例 #1### 样例输入 #1```4 40 1 1 11 1 1 00 1 1 01 1 0 1```原创 2023-04-09 17:02:56 · 640 阅读 · 3 评论 -
AVL平衡二叉树是什么?如何用C++代码实现
平衡二叉树(AVL树)特点:左子树和右子树都是平衡二叉树,且左右子树的深度差绝对值不超过1。平衡因子BF:定义为该节点的左子树深度减去它的右子树深度。则平衡二叉树上的所有结点的平衡因子只可能是-1,0,1.只要二叉树上有一个结点的平衡因子的绝对值大于1,那么该二叉树就是不平衡的。举例:下图1不是BST树,59>58下图2不是,58不满足左右子树高度差为1的条件下图3不是。原创 2023-04-06 20:39:16 · 313 阅读 · 0 评论 -
什么是二分查找(折半查找)?C语言怎么实现?递归如何实现?
二分查找(折半查找)算法效率分析:时间复杂度、空间复杂度平均时间复杂度:O(n);空间复杂度:O(1);前提:数组元素有序代码实现:1,main函数内实现:intmain(){intarray[MAX] = { 1,2,3,5,6,7,8,9,10,11,12 };intlength = sizeof(array) / sizeof(array[0])-1;//减1!!intright = array[l...原创 2021-12-11 19:21:50 · 458 阅读 · 0 评论 -
动态规划 | 力扣198.打家劫舍用C++实现
盗贼准备打家劫舍,已知有n个房屋,每个房屋中有数量不等的财宝,有一个盗贼希望从房屋中取果最甘4房屋中有报警器,同时从相邻的两个房屋中盗取财宝就会触发报警器,计算在不触发报警器的前提下多可获取多少财宝。例如: 5,2,6,3,1,7--->结果为18。原创 2023-04-03 19:55:33 · 340 阅读 · 0 评论 -
贪心 | 力扣376 C++实现摇摆序列
摇摆序列一个整数序列,如果两个相邻元素的差恰好正负(负正)交替出现,则该序列被称为摇摆序列。一个小于2个元素的序列直接为摇摆序列。例如:序列[1,7,4,9,2,5],相邻元素的差(6,-3,5,-7,3),该序列为摇摆序列。序列[1,4,7,2,5](3,3,-5,3),[1,7,4,5,5](6,-3,1,0)不是摇摆序列。给一个随机序列,求这个序列满足摇摆序列定义的最长子序列的长度。原创 2023-04-03 15:26:29 · 598 阅读 · 0 评论 -
力扣55.跳跃游戏Ⅱ
跳跃游戏一个数组存储了非负整形数据,数组中的第i个元素nums[i],代表了可以从数组第i个位置最多向前跳跃nums[i]步,已知数组各元素的情况下,求是否可以从数组的第0个位置跳跃到数组的最后一个元素的位置?例如:nums=[2,3,1,1,4],可以从nums[0]=2跳跃至nums[4]=4nums = [3,2,1,0,4],不可以从nums[0]=3跳跃至nums[4]=4。原创 2023-04-03 14:54:43 · 297 阅读 · 0 评论 -
贪心算法 | 473火柴拼正方形 怎么用C++实现摆放火柴棍?
已知一个数组,保存了n个(n原创 2023-03-30 08:21:16 · 459 阅读 · 0 评论 -
递归 | 力扣22 括号生成 用C++实现对括号的组合
有n组括号,生成这n组括号所有的合法的组合对于某组括号,(())这种情况是合法的;)( 不合法例如:n = 3;结果:"((()))","(()())","()()()","(())()","()(())"原创 2023-03-27 20:11:02 · 282 阅读 · 0 评论 -
递归 | 力扣78 怎么求子集? C++实现子集求解
有一组数,没有重复元素,计算这组数可以组成的所有的子集,结果中不可有重复的子集例如:int num[] = {1,2,3};结果:[],[1],[1,2],[1,2,3],[1,3],[2],[2,3],[3]原创 2023-03-27 16:21:01 · 464 阅读 · 0 评论 -
【递归】8皇后问题用代码解决
N皇后问题是计算机科学中最为经典的问题之一,该问题可追溯到1848年,由国际西洋棋棋手马克斯.贝瑟尔提出了8皇后问题。将N个皇后摆放在N*N的棋盘中,互相不可攻击,有多少种摆放方式,每种摆放方式具体是怎么?若在棋盘上已放置一个皇后,它实际上占据了哪些位置?以这个皇后为中心,上,下,左,右,左上,左下,右上,右下,8个方向的位置全部被占据。原创 2023-03-16 21:07:03 · 722 阅读 · 4 评论 -
什么是最小生成树?Prim和kruskal算法是什么?
在下图中, 显然是一个带权值的图,即网结构。假设每个结点是一个村,要使村之间能够互相通信,8个存最少需要的边个数为7(n个顶点最少需要n-1条边将其连通起来)。n 个顶点,用n-1条边把一个连通图连接起来,并且使得权值的和最小,就是各村之间通信的最小成本,每多一公里就多一份成本,所以只要让线路连线的公里数最少,就是最少成本了。把构造连通网的最小代价生成树称为最小生成树MSpanningTree)。而构建最小生成树共有两种算法——prim算法和kruskal算法,在下面进行介绍。原创 2023-02-08 21:52:06 · 452 阅读 · 0 评论 -
深度搜索和广度搜索是什么?代码怎么实现?
对下左图进行如右图的深度搜索:从顶点A开始遍历,接着遍历A的第一个邻接顶点继续从B开始遍历B的第一个邻接顶点C,接着从C始遍历C的第一个邻接顶点D...直到遍历到F,F的第一个临界顶点已经被遍历,则遍历F的下一个邻接顶点G,接着从G的第一个邻接顶点遍历。对下左图进行广度搜索: 从顶点A开始遍历,接着遍历A的第一个邻接顶点B继续从B开始遍历B的第一个邻接顶点C,接着从C开始遍历C的第一个邻接顶点D.直到遍历到F,F的第一个临界顶点已经被遍历,则遍历F的下一个邻接顶点G,接着从G的第一个邻接顶点遍历。原创 2023-02-07 19:38:55 · 2170 阅读 · 0 评论
分享