
算法
文章平均质量分 78
驼驼学编程
在校大学生,记录一些日常学习内容
展开
-
游戏树搜索与优化策略:Alpha-Beta剪枝及其实例分析
不盲目计算所有可能,而是边算边排除垃圾选项。原创 2025-03-05 19:58:51 · 1199 阅读 · 0 评论 -
图的路径搜索算法
介绍了几种图的路径搜索算法原创 2025-02-26 19:19:15 · 745 阅读 · 0 评论 -
算法中的渐近分析
目录1.基本概念(1)𝚯记号(2)𝑶记号(3)𝛀记号2.几者关系1.基本概念渐近记号 名称 𝑻 (𝒏) = 𝚯(𝒈(𝒏)) 渐近紧确界 𝑻 (𝒏) = 𝑶(𝒈(𝒏)) 渐近上界 𝑻 (𝒏) = 𝛀(𝒈(𝒏)) 渐近下界 (1)𝚯记号对于给定的函数𝒈(𝒏),𝚯(𝒈(𝒏))表示以下函数的集合: 𝚯 (𝒈 (𝒏)) = {𝑻 (𝒏) : ∃ 𝒄𝟏, 𝒄𝟐, 𝒏𝟎 > 𝟎,使得∀ 𝒏 ≥ 𝒏𝟎, 𝒄𝟏𝒈 (𝒏) ≤ 𝑻 (𝒏).原创 2022-05-12 12:03:10 · 1837 阅读 · 0 评论 -
n皇后问题(回溯法)
目录1.问题描述2.问题分析3.完整源码1.问题描述八皇后问题是十九世纪著名的数学家高斯于1850年提出的。问题是:在8×8的棋盘上摆放八个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行、同一列或同一斜线上。可以把八皇后问题扩展到n皇后问题,即在n×n的棋盘上摆放n个皇后,使任意两个皇后都不能处于同一行、同一列或同一斜线上。2.问题分析确定问题状态:问题的状态即棋盘的布局状态构造状态空间树:状态空间树的根为空棋盘,每个布局的下一步可能布局是该布局结点的子结..原创 2022-05-11 00:15:00 · 55118 阅读 · 23 评论 -
二分搜索(结合例题讲解)
目录1. 题目描述2. 题目分析(1)第一次查找 (起始位置)(2)第二次查找(结束位置)3.核心代码1. 题目描述已知一个从小到大的排序数组,求数组中等于目标值元素的下标,数组中可能有重复的元素,所以如果目标值存在,返回目标值在数组中的开始位置和结束位置,如果目标值不存在,返回两个-1。2. 题目分析这一题是典型的二分查找,需要用到两次,分别查找目标值开始位置和结束位置(1)第一次查找 (起始位置)起始位置二分查找代码的实现,传入数组nums与目标值tar..原创 2022-05-10 02:30:00 · 478 阅读 · 0 评论 -
归并排序(手工运算及完整代码)
目录1.问题描述2.基本概念3.手工运算4.完整代码1.问题描述给定你一个长度为 n 的整数数列。请你使用归并排序对这个数列按照从小到大进行排序。并将排好序的数列按顺序输出。2.基本概念归并排序:分解数组,递归求解,合并排序算法流程:1.将数组A[1,n]排序问题分解为A[1,n/2]和A[(n/2+1),n]排序问题2.递归解决子问题得到两个有序的子数组3.将两个有序子数组合并为一个有序数组3.手工运算4.完整代码.原创 2022-05-09 00:15:00 · 704 阅读 · 1 评论 -
快速排序(手工运算及完整代码)
目录1.题目简介2.动图演示3.手工运算4.完整源码(1)基本算法(2)STL快速算法1.题目简介给定你一个长度为 n 的整数数列。请你使用快速排序对这个数列按照从小到大进行排序。并将排好序的数列按顺序输出。2.动图演示3.手工运算例题:使用快速排序对下列数据进行排序:{4 3 7 1 0 9 2 6},关键字为4,写出第一趟分割过程的每次交换步骤和结果解答:{4 3 7 1 0 9 2 6},关键字为4现设置两个指针i,j...原创 2022-05-08 15:45:28 · 1953 阅读 · 3 评论 -
几大基本算法的概念
1。递归(1)基本概念递归算法是一个模块(函数,过程)除了可调用其他模块(函数,过程)外,还可以直接或间接的调用自身的算法(2)基本思想把大问题分解为小问题,进一步分解为更小的问题,直到每个小问题可以解决为止(3)基本步骤1.分析问题,寻找递归:找出大规模问题与小规模问题的关系,这样通过递归使问题的规模逐渐变小2.设置边界,控制递归:找出停止条件,即算法可解的最小规模问题3.设计函数,确定参数:和其他算法模块一样设计函数中的操作及相关参数2.分治(1)基本概念原创 2022-05-07 03:00:00 · 310 阅读 · 0 评论 -
霍夫曼编码(贪心)
目录1.什么叫霍夫曼编码2.如何手工运算得到霍夫曼编码3.完整源码(1)只输出权值(2)输出树形1.什么叫霍夫曼编码霍夫曼编码(英语:Huffman Coding),又译为哈夫曼编码、赫夫曼编码,是一种用于无损数据压缩的熵编码(权编码)算法。由大卫·霍夫曼在1952年发明。在计算机数据处理中,霍夫曼编码使用变长编码表对源符号(如文件中的一个字母)进行编码,其中变长编码表是通过一种评估来源符号出现机率的方法得到的,出现机率高的字母使用较短的编码,反之出现机率低的则使用原创 2022-05-06 16:00:47 · 2777 阅读 · 2 评论 -
最长公共子序列(动态规划)
目录1.问题描述2.问题分析3.手工运算4.核心源码1.问题描述给出两个字符串,求出这样的一个最长的公共子序列的长度:子序列中的每个字符都能在两个原串中找到而且每个字符的先后烦序和原串中的先后顺序一致。Sample Inputabcfbc abfcabprogramming contestabcd mnpSample Output4202.问题分析输入两个串s1,s2, 设MaxLen(i,j)表示:...原创 2022-05-05 20:17:14 · 459 阅读 · 0 评论 -
0-1背包【多种算法解答(手工运算及完整源码)】
1.问题描述有 N 件物品和一个容量是V的背包。每件物品只能使用一次。第 i 件物品的体积是 vi ,价值是 wi 。求解将哪些物品装入背包,可使这些物品的总体积不超过背包容量,且总价值最大。输出最大价值。2.问题解析及完整源码(1)二维DP(1)状态f[i][j]定义:前 i个物品,背包容量 j 下的最优解(最大价值):当前的状态依赖于之前的状态,可以理解为从初始状态f[0][0] = 0开始决策,有 N件物品,则需要 N次决 策,每一次对第 i件物品的决策,状...原创 2022-05-04 11:04:28 · 1189 阅读 · 0 评论 -
数字三角形【动态规划(含手工运算及多种源码)】
目录1.问题描述2.解题思路3.手工运算4.空间优化5.完整源码(1)从下到上DP(2) DP,记录路径(3)从上到下DP1.问题描述给定一个如下图所示的数字三角形,从顶部出发,在每一结点可以选择移动至其左下方的结点或移动至其右下方的结点,一直走到底层,要求找出一条路径,使路径上的数字的和最大。 7 3 8 8 1 0 2 7 4 44 5 2 6 52.解题思路用二维原创 2022-05-03 01:00:00 · 2710 阅读 · 0 评论 -
矩阵链相乘【动态规划(手工运算及源码)】
目录1.动态规划基本步骤2.问题描述3.完全加括号(计算次序)的方式4,三个矩阵相乘5.利用动态规划解决问题6.手工运算7.全部源码1.动态规划基本步骤(1)动态规划算法通常用于求解具有某种最优性质的问题。在这类问题中,可能会有许多可行解。每一个解都对应于一个值,我们希望找到具有最优值(最大值或最小值)的那个解。(2)设计一个动态规划算法,通常可以按以下几个步骤进行:1.找出最优解的性质,并刻划其结构特征。2.递归地定义最优值。3.以自底向上的方式计..原创 2022-05-02 00:15:00 · 1254 阅读 · 0 评论 -
最大子序列和问题【分治法(附手工运算及多种源码)】
目录1.题目概述2.两种手工运算方法(1)分治法比大小(2)边扫描边更新比大小3.代码实现(1)Algorithm 1(2)Algorithm 2(3)Algorithm 3(4)Algorithm 41.题目概述给定一个包含 KK 个整数的序列 {N1,N2,…,NK}{N1,N2,…,NK}。连续子序列定义为 {Ni,Ni+1,…,Nj}{Ni,Ni+1,…,Nj},其中 1≤i≤j≤K1≤i≤j≤K。最大子序列是指序列内各元素之和最大的连续子.原创 2022-05-01 01:00:00 · 2507 阅读 · 0 评论 -
STL库基础学习
目录1.什么是STL库2.几种常见的STL模板(1)vector1.vector向量模板2.vector迭代器3.常见方法与用法(2)list(3)queue和stack(4)set和map3.几种STL 的时间复杂度比较1.什么是STL库◦STL又称为标准模板库,是一套功能强大的 C++ 模板类,提供了通用的模板类和函数,这些模板类和函数可以实现多种流行和常用的算法和数据结构,如向量、链表、队列、栈。◦也就是说,有了STL,数据结...原创 2022-04-15 21:01:53 · 6346 阅读 · 0 评论 -
旅行商问题的手工运算及完整代码(TSP)
目录1.问题描述2.解空间树是排列树3.算法描述4.手工运算第一步:找出每一行的最小值第二步:找较短路径第三步:比较大小5.代码实现(1)分支界限法(2) 回溯法1.问题描述·某售货员要到若干城市去推销商品,已知各城市之间的路程(或旅费)。他要选定一条从驻地出发,经过每个城市一次,最后回到驻地的路线,使总的路程(或总旅费)最小。2.解空间树是排列树3.算法描述·算法开始时创建一个最小堆,用于表示活结点优先队列。·堆中每个活...原创 2022-04-13 19:10:48 · 6313 阅读 · 2 评论