![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法
文章平均质量分 86
superSmart_Dong
这个家伙很懒,啥都不想写
展开
-
三次样条插值——三弯矩方法
三弯矩法是计算机主流的三次样条计算方式原创 2023-01-07 12:51:58 · 3734 阅读 · 0 评论 -
矩阵的投影、线性拟合与最小二乘法
矩阵的四大基础子空间、投影矩阵、最小二乘法原创 2022-08-14 16:46:06 · 2388 阅读 · 0 评论 -
动态规划算法分析和理解:最长公共子序列、公共子字符串
定义啥的就不多说了,反正我有自己的理解就行。一、递归和动态规划 动态规划是算法的一种和 ”递归“有相似之处,也有不同。动态规划和分治递归,都是为了拆分出更小的子问题,对子问题逐一解决,最后得到结果。两者不同的地方在于,递归的子问题拆分是在代码实现中体现的,利用栈将大问题拆分成子问题,最后由最小的子问题,逐个反馈合并成大问题所需要的结果。是一个自上而下拆分,再自下而上计算的过程。而动态规划的子问题的拆分过程并不是在代码中体现,而是由程序员在编码前分析好。在编码时,直接求解最小的问题,通过...原创 2022-01-29 16:29:17 · 1675 阅读 · 0 评论 -
C++ : 矩阵初等行变换,化成最简矩阵
化成最简矩阵分成如下步骤从矩阵的第 i=0 行开始化简1.寻找最长元素行:从第i行开始,寻找第一个开头行元素非0的行,利用行交换把该行换到矩阵的第i行。2.对第i行进行化简:对第i行的所有元素同除该行的首个非0元素。3.矩阵行化简: 从矩阵的第 j=0 行开始。与第i行首个非0元素同列的元素,即为行化简的倍数,每行减去该 倍数*第i行的值就得到了一次行化简的结果 ,回第1步,i++。/** * 矩阵行变换成最简矩阵 * @tparam ElemType * @return.原创 2020-12-11 00:12:00 · 4510 阅读 · 0 评论 -
时间复杂度、渐进记法、主定理
时间复杂度反应了一个程序的运行时间关于实例个数变化而变化规律。在一个排序程序中,可能比较了 2n 次,但是执行步数可能达到了 2n^3 ,就不能直接判定程序运行时间是 n 的线性函数。两个程序比较次数一个是3n,一个是2n 那么不能说前者的花费的时间就要更慢些,因为在总的执行步数上未必会比后者多。当实例个数足够多的时候,计量时间的方法叫做渐进记法,最常用的是 O(g(x)) 表示。其他常用还有 o , Ω , Θ 记法。一 、 大 O 记法当实例个数n足够多时 ,程序执行总步数 f(n) ...原创 2020-11-26 00:47:37 · 703 阅读 · 0 评论 -
内部排序选择、冒泡、插入、希尔、快速、归并、堆排序原理概要和实现
目录一、选择排序二、冒泡排序三、插入排序四、希尔排序五、快速排序六、归并排序七、堆排序八、代码和调用一、选择排序 在线性表中,分为排好序的前一部分V和还未排好序U的后一部分,刚开始整个线性表都是未排好序的。选择排序就是在未排好序U集合的部分每次选择最小值换到最前面。然后纳入集合V。二、冒泡排序 冒泡排序,每次排序比较连续两个相邻的元素,小的交换到前面,大的交换交换到后面,达到每次排序小元素“浮"数组前面或大元素"沉"到数组后面的过程。...原创 2020-11-16 00:15:44 · 192 阅读 · 0 评论 -
C++ : 二进制法生成子集
一个有 n 个元素的集合 (n >=0,n为整数),可以生成 2^n个子集。例如 {a,b} 可以生成4个子集 {空}、{a},{b}{a,b}二进制法就是 从0到 2^n用二进制表示,为1的对应的数组位置元素 纳入子集集合。例如 a = {a,b,c,d} 有 16个子集,建立如下表十进制数 二进制数 1对应的数组元素 结果集 0 0000 空 1 0001 a[3] d 2 0010 ...原创 2020-11-01 23:25:56 · 719 阅读 · 3 评论 -
C++ : STL常用算法: inner_product , sort ,itoa
目录1.std::count2.std::inner_product3.atoi4.itoa5 is_sorted 6 sort7. fill1.std::countcount(_InputIterator __first, _InputIterator __last, const _Tp& __value)在头文件algorithm 中,用来记录线性表 从 __first 到 __last 中出现 __value的次数#i...原创 2020-11-01 22:09:50 · 354 阅读 · 0 评论 -
C++ : 返回两个字符串的最长公共字符串
原理: x 轴和 y 轴分别取 自身和 str2 然后表格对齐,相同的字符 设成 1 其他为 0 ,取斜对角线 最长不为 0的字符串极为公共子字符串例如asbbefg 和 aubeg 最大值2 a s b b e f g a 1 0 0 0 0 0 0 u 0 0 0 0 0 0 0 b 0 0 1 1 0 0 ...原创 2020-10-24 02:02:02 · 740 阅读 · 0 评论 -
C++ 数据结构-图相关操作的算法思路
目录1.回路的判断:2.普利姆-最小生成树3.克鲁斯特卡尔-最小生成树4.迪杰斯特拉-最短路径5.图的最长路径(不走重复路)6.有向无环图的关键路径1.回路的判断:用深度优先遍历,在有向图中如果遍历过程中重复访问到已经访问过的点,那么这个有向图就是就是有回路;如果是无向图,重复访问到了祖先结点那么这个无向图就存在回路。2.普利姆-最小生成树需要输入一个开始结点,新建一个对象数组arr [ size](nodeIndex,lowcost) ,其中nodeIndex...原创 2020-09-26 02:05:31 · 367 阅读 · 0 评论 -
C++ : KMP 字符串匹配算法
在传统字符串匹配中我们求得字符串p出现在字符串s中的位置。我们把字符串s称为主串,字符串p称为模式串。KMP算法的原理简单来说就是匹配的时候不回溯主串的指针i,而只回溯模式串指针j ,即匹配过程中,不移动主串,指移动模式串来达到"尽可能向右滑动最大的距离"。num 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20原创 2020-08-11 02:54:39 · 440 阅读 · 0 评论 -
编译实验(一)词法分析
编译原理课程即将结束,开始了在校中最麻烦的实验,编译实验......同在一个系,其他班的编译实验分成好几块,简短的文法,完成一些小功能,就我们班的老师,撂下一句话:参考书本,把编译器实现了,可以一组两人分工合作。源代码连接:http://download.csdn.net/download/supersmart_dong/10224159词法分析流程图:首先要做...原创 2018-01-25 18:12:52 · 1404 阅读 · 3 评论 -
编译实验(二)语法/语义分析
源代码下载链接:http://download.csdn.net/download/supersmart_dong/10224159通过词法分析,我们成功得到了一个完整的token 文件以及符号表,接下来要做的就是语法/语义分析。我们采用的分析方法是算符优先算法,实现这一个算法的前提是文法必须是算符优先文法,因此我们首先要做的事就是构造算符优先文法,文法结构如下:1、构造文法并且初原创 2018-01-26 10:35:59 · 2509 阅读 · 1 评论 -
编译实验(三)目标代码生成
通过词法分析,语法分析,语义分析,最后产生了四元式。而代码生成则是通过四元式来完成。我们先从简单开始做起。编译实验项目下载链接:http://download.csdn.net/download/supersmart_dong/10224159例如四元式(j,0,0,7)这样的,代码生成只需要一个goto语句;(j=,A,B,7)代码生成为:CMP A,BJE .....原创 2018-01-28 17:00:09 · 9076 阅读 · 3 评论 -
汇编原理实验--输出ASCII码10H到100H
实验1:ASCII码设计算法:为了将ASCII的10H到100H输出显示,得从10H开始显示输出然后循环90h次,每次ASCII自增1,重复上述步骤。编程实现:将循环次数90h存在计数器cx中,用dx寄存器存放ASCII码数据,每次循环dx自增1。因为还需要一个每满输出16个字符后换行的功能,用bx赋初值16,存放每行还剩输出字符的个数,每输出 1各字符bx自减1,当bx为0时调用回车换行原创 2018-02-05 17:27:33 · 2429 阅读 · 1 评论 -
汇编原理实验 --查找子字符串的位置
实验2:(子字符串,查找字符串在另一个字符串中出现的位置)设计算法:将用户输入关键字和句子,将bx为关键字起始位置地址,dx赋初值为句子起始位置地址,将dx和bx内容进行匹配,如果不匹配则dx指向句子下一个字符及inc dx。用di表示当字符匹配成功时bx,dx的偏移量,di赋初值为0,[bx+di]与[dx+di]比较,如果匹配成功di自增1,直到di加到等于关键字长度时显示结果匹配成功,如原创 2018-02-05 17:31:55 · 2260 阅读 · 0 评论 -
汇编原理实验 --电话簿的实现
实验4:(电话本)要求:可放50项的电话号码表,每项中有姓名(20)和电话号码(8),存放联系人,并且进行排序。并完成添加电话,根据姓名查询电话,显示输出等功能算法设计:①数据结构:可放50项的电话号码表,每项中有姓名(20)和电话号码(8)。数据定义则用tel_tab db 50 dup(20 dup(' '),8 dup(' ')),即可满足,每项用空白符初始化②.1原创 2018-02-05 17:53:02 · 2668 阅读 · 0 评论 -
汇编原理实验 --计算平均数
先不考虑用户输入以及输出,我们可以根据一些总结来的经验得出:在处理数组累加,以及求平均值的程序中需要用到循环,把用户输入的数字加起来,然后除以一个总数得到平均值。了解了核心算法后,开始需要处理一些汇编细节,和其他高级语言不同,在汇编语言中用户输入的数字其实是字符,用ASCII保存的。例如用户输入18,实际上是输入’1’.’8’,对应的ASCII为,31h,38h,如果想要进行运算,首先要把用户原创 2018-02-05 17:55:25 · 10888 阅读 · 0 评论 -
汇编原理实验 --类型统计(字母,数字,其他字符的个数)
实验3: (类型统计,统计字母,数字,其他字符在一个句子中出现的次数)算法设计:用三个变量分别记录用户输入数字类型,字母类型和其他类型的个数。根据ACSII码判断类型,遍历完整个句子后调用十进制数输出子程序dispdec输出统计数字程序实现:定义缓冲区:存放用户输入的句子,用digit,letter,other分别代表统计出的数字,字母,其他字符的个数,都初始化为0。用bx指向用户输入句子原创 2018-02-05 17:49:58 · 5196 阅读 · 1 评论 -
模糊数学——模糊集合
运用数学知识,如何用集合表示大于1且小于5的实数。这可以说是非常简单的 A={x| 1张三李四王五赵六小明小红小王成绩959910047718489现在有一个问题:请表示成绩优秀的人的集合。这一题用之前的数学问题就不好表示了,怎样的成绩算优秀,每个人的评判标准都是不一样的。先引入模糊原创 2017-09-05 20:12:14 · 7436 阅读 · 1 评论