随笔分类 -  数据结构和算法

数据结构和算法
摘要:0/1 背包问题 给定 N 件物品,每件物品有 重量 w[i] 和 价值 v[i],现有一个容量为 W 的背包,求能装入的最大总价值。 思路 定义状态 dp[i][j] 表示前 i 件物品,在容量 j 的背包下的最大价值。 状态转移方程 不选第 i 件物品:dp[i][j] = dp[i-1][j] 阅读全文
posted @ 2025-02-20 13:58 MaxBruce 阅读(21) 评论(0) 推荐(0)
摘要:在 C# 语言中,常见的算法思想也广泛应用于各种问题解决方案。下面是几种 核心算法思想,并附有 C# 代码示例。 1. 分治(Divide and Conquer) 📌 思想:将一个问题分解为 多个子问题,递归求解,然后合并结果。📌 典型应用: 二分查找 归并排序 快速排序 🔹 示例:二分查找 阅读全文
posted @ 2025-02-17 16:14 MaxBruce 阅读(12) 评论(0) 推荐(0)
摘要:C# 迷宫求解算法 迷宫求解通常可以使用 深度优先搜索(DFS)、广度优先搜索(BFS)、A(A-star)搜索* 或 Dijkstra 算法。以下是几种常见方法的思路及代码示例。 1. 迷宫表示 迷宫通常可以使用 二维数组(char[,] 或 int[,])来表示: 0 表示可以通过的路径 1 表 阅读全文
posted @ 2025-02-11 15:31 MaxBruce 阅读(87) 评论(0) 推荐(0)
摘要:回溯法(Backtracking)是一种搜索算法,主要用于解决组合优化问题,如全排列、子集、数独、八皇后问题等。它通过递归的方式尝试所有可能的解决方案,并在发现当前路径无法得到正确答案时回溯到上一步,继续尝试其他路径。 回溯法的基本思想 选择:选择一个可能的选项。 约束:检查该选择是否满足问题的约束 阅读全文
posted @ 2025-02-11 15:12 MaxBruce 阅读(44) 评论(0) 推荐(0)
摘要:动态规划(DP) 是一种用于最优化问题的算法设计方法,它通过拆解子问题、存储子问题解,避免重复计算,从而提高效率。 动态规划的核心思想 最优子结构(Optimal Substructure) 一个问题的最优解可以由其子问题的最优解推导出来。 重叠子问题(Overlapping Subproblems 阅读全文
posted @ 2025-02-10 16:41 MaxBruce 阅读(125) 评论(0) 推荐(0)
摘要:贪心算法(Greedy Algorithm) 是一种算法策略,它在求解问题时,每一步都选择当前**最优(局部最优)**的解,希望最终能得到全局最优解。 🔹 关键特点: 贪心选择(Greedy Choice):每一步都做出局部最优的选择。 无后效性(No Aftereffect):当前选择不会影响后 阅读全文
posted @ 2025-02-10 16:15 MaxBruce 阅读(151) 评论(0) 推荐(0)
摘要:原文:https://my.oschina.net/u/3024426/blog/4689026 回溯法(Back Tracking Method)(探索与回溯法)是一种选优搜索法,又称为试探法,按选优条件向前搜索,以达到目标。但当探索到某一步时,发现原先选择并不优或达不到目标,就退回一步重新选择, 阅读全文
posted @ 2025-02-09 23:36 MaxBruce 阅读(51) 评论(0) 推荐(0)
摘要:原文网址:https://www.jb51.net/article/252018.htm 一个比较常见的改进用户体验的方案是用Redo/Undo来取代确认对话框,由于这个功能比较常用,本文简单的给了一个在C#中通过Command模式实现Redo/Undo方案的例子,以供后续查询。 1 2 3 4 5 阅读全文
posted @ 2022-08-20 16:30 MaxBruce 阅读(230) 评论(0) 推荐(0)
摘要:原文网址:平衡二叉树(AVL)插入结点后的再平衡思路_听到微笑的博客-CSDN博客_avl树再平衡的方法 理解平衡二叉树在解决平衡二叉树动平衡问题,我们先来明确什么是平衡二叉树: 平衡二叉树是二叉搜索树的一种特殊情况,所以在二叉搜索树的基础上加上了如下定义: 平衡因子:我们将二叉树中各个结点的左右子 阅读全文
posted @ 2022-08-13 21:19 MaxBruce 阅读(256) 评论(0) 推荐(0)
摘要:引用网址:https://sa93g4.smartapps.baidu.com/pages/squestion/squestion?qid=570739723&rid=3007281690&eid=11048&_swebfr=1&_swebFromHost=mibrowser 规则是:出栈序列中的每 阅读全文
posted @ 2022-06-28 23:32 MaxBruce 阅读(3400) 评论(0) 推荐(0)
摘要:引用网址:https://www.jianshu.com/p/796f23a96596 一、算法概述 1.1 算法分类 十种常见排序算法可以分为两大类: 比较类排序:通过比较来决定元素间的相对次序,由于其时间复杂度不能突破O(nlogn),因此也称为非线性时间比较类排序。 非比较类排序:不通过比较来 阅读全文
posted @ 2022-05-10 14:10 MaxBruce 阅读(110) 评论(0) 推荐(0)
摘要:动态规划(Dynamic Programming,DP)是运筹学的一个分支,是求解决策过程最优化的过程。20世纪50年代初,美国数学家贝尔曼(R.Bellman)等人在研究多阶段决策过程的优化问题时,提出了著名的最优化原理,从而创立了动态规划。动态规划的应用极其广泛,包括工程技术、经济、工业生产、军 阅读全文
posted @ 2022-05-10 08:46 MaxBruce 阅读(52) 评论(0) 推荐(0)
摘要:网址:https://juejin.cn/post/6844903655368294407 算法简介 狄克斯特拉算法(Dijkstra )用于计算出不存在非负权重的情况下,起点到各个节点的最短距离 可用于解决2类问题: 从A出发是否存在到达B的路径; 从A出发到达B的最短路径(时间最少、或者路径最少 阅读全文
posted @ 2022-05-04 22:56 MaxBruce 阅读(376) 评论(0) 推荐(0)
摘要:引用网址:https://www.cnblogs.com/ssyfj/p/9475148.html 目录 一:图的抽象数据类型二:图的存储结构讨论三:图的存储结构(1) 邻接矩阵 (一)无向图 (二)有向图 (三)网 (四)实现无向网图创建四:图的存储结构(2) 邻接表 邻接表处理办法 (一)无向图 阅读全文
posted @ 2022-05-04 00:02 MaxBruce 阅读(464) 评论(0) 推荐(0)
摘要:引用网址:https://www.cnblogs.com/ssyfj/p/9485501.html 目录 一:深度优先遍历(邻接矩阵实现) (一)定义 (二)实现思路 (三)递归实现伪代码 (四)非递归实现伪代码 (五)代码实现(递归+非递归) (六)应用:马踏棋盘二:广度优先遍历(邻接矩阵) (一 阅读全文
posted @ 2022-05-03 23:59 MaxBruce 阅读(569) 评论(1) 推荐(0)
摘要:引用网址:https://www.cnblogs.com/ssyfj/p/9488723.html 目录 一:最小生成树 (一)定义 (二)什么是最小生成树? (三)案例说明(四)求最小生成树的算法二:贪心算法 1.什么是贪? 2.什么是好? 3.需要约束三:普里姆算法(稠密图) (一)定义 (二) 阅读全文
posted @ 2022-05-03 23:48 MaxBruce 阅读(754) 评论(0) 推荐(0)
摘要:网址引用:https://blog.csdn.net/luzhensmart/article/details/85275100 一、二叉树的基本概念 二叉树:二叉树是每个节点最多有两个子树的树结构。 根节点:一棵树最上面的节点称为根节点。 父节点、子节点:如果一个节点下面连接多个节点,那么该节点称为 阅读全文
posted @ 2022-05-01 22:06 MaxBruce 阅读(231) 评论(0) 推荐(0)
摘要:引用网址:https://zhuanlan.zhihu.com/p/73438175 二叉树的前序、中序、后序遍历 二叉树的相关概念请参考:二叉树_百度百科 二叉树: 前序遍历A-B-D-F-G-H-I-E-C 中序遍历F-D-H-G-I-B-E-A-C 后序遍历F-H-I-G-D-E-B-C-A 阅读全文
posted @ 2022-05-01 13:46 MaxBruce 阅读(411) 评论(0) 推荐(0)
摘要:参考网址: https://www.cnblogs.com/MrListening/p/5788842.html AVL树的概念 在说AVL树的概念之前,我们需要清楚二茬搜索树的概念。对于二叉搜索树,我们知道它可以降低查找速率,但是如果一个二叉搜索树退化成一棵只剩单支的搜索树,此时的查找速率就相当于 阅读全文
posted @ 2021-09-12 14:34 MaxBruce 阅读(637) 评论(0) 推荐(0)
摘要:参考网址 :https://www.cnblogs.com/MrListening/p/5782752.html 二叉搜索树又被称为二叉排序树,那么它本身也是一棵二叉树,那么满足以下性质的二叉树就是二叉搜索树: 1、若左子树不为空,则左子树上左右节点的值都小于根节点的值 2、若它的右子树不为空,则它 阅读全文
posted @ 2021-09-12 14:15 MaxBruce 阅读(508) 评论(0) 推荐(0)