- 博客(38)
- 收藏
- 关注
原创 【数据结构基础C++】索引堆-Index Heap
为什么要引入索引堆在堆排序中,比如最小堆,我们从最后一个非叶子结点开始(上图示例中索引 8/2 = 4)一直到索引1,经过不断的调整(shiftDown),使得最小值调整到堆顶。在这个调整的过程中,进行了元素的交换。若这个元素是较为复杂的结构的话,会产生较大性能的消耗;还有一个问题就是,成最小堆之后,原来的data[1] = 92 将变成最小值 30,若我们想改变原来data[1] = 92 的值,就很难找到92在成堆之后的位置,元素位置发生改变,只能重新遍历数组。由此引出索引堆来解决这个问题。voi.
2021-12-27 22:08:17 751
原创 【数据结构基础C++】图论10-单源最短路径(Dijkstra’s shortest path algorithm)
过程假设上图中的顶点代表各个城市,每条边的权值代表城市间的路程长度。0->5 表示可以从城市 0 直达城市 5,路程长度 10;0->2->3->5 代表可以经过城市 2,3 到达城市 5,路程长度 7。你想要找到从城市0到城市5的最短路程,或者从城市0到其余各个城市的最短路程。这就是单源最短路径问题:给定带权图G和源点v,求从v到图G中其余各顶点的最短路径。如何求得这些路径?迪杰斯特拉(Dijkstra)提出了一个按路径长度递增的次序产生最短路径算法。(条件:所有边的权值为
2021-12-25 23:30:30 1621
原创 【数据结构基础C++】图论09-基于克鲁斯卡尔算法的最小生成树(Kruskal)
基本思想假设要在V个城市之间建立通信网络,则连通n个城市只需要V-1条线路。如何在最节省经费的前提下建立通信网络?可以用连通图表示V个城市以及V个城市间可能设置的通信线路,其中顶点表示城市,边表示城市之间的线路,边的权值表示相应的代价。现在要选择这样一棵树,使得总的代价最小,这就是最小生成树的问题。克鲁斯卡尔算法的思想是,每次从边集中选出最小的边,若这条边加入后不会形成环,则这条边属于最小生成的边。-1. 对连通无向图中的所有带权边进行排序(可以使用最小堆(最小堆))2.选出最小权值的边,检查是
2021-12-24 18:51:03 799
原创 【数据结构基础C++】并查集(Disjoint Set or Union-Find))
并查集应用1-用于检测无向图中是否有环并查集是一种树形的数据结构,用于处理一些不相交集合的合并(Union)及查询问题(Find)。Find: 确定特定元素在哪个子集中。这可用于确定两个元素是否在同一子集中。Union: 将两个子集连接成一个子集。首先检查这两个子集是否属于同一集合,如果不是,就不能执行联合。并查集算法可以用来检查一个给定无向图是否包含环。假设顶点不带自环。可以用一个1维数组进行跟踪。父亲数组 parent[ ]考虑如下图:对于每条边,使用边的两个顶点创建子集。 如果两个顶
2021-12-23 16:26:37 1132
原创 【翻译】评论文章-Rapid Exploration for Open-World Navigation with Latent Goal Models
**源文章来自杂志 Computer Vision News,December 2021,作者Marica Muffoletto**亲爱的读者,本月我们回顾了来自伯克利大学和卡内基梅隆大学的一篇论文-Rapid Exploration for Open-World Navigation with Latent Goal Models[论文连接](https://arxiv.org/abs/2104.05859)。该论文最近在第五届伦敦机器人学习大会上发表。我们欢迎这项新的计算机视觉研究,我们感谢作者
2021-12-22 03:01:54 464 2
原创 【数据结构基础C++】图论08-Prim 算法实现最小生成树
1.最小生成树Minimum Span Tree在一个含有n个顶点,m条边,带权无向连通图中,存在一个含有n个顶点,n-1条边,且权值总和最小的一棵树;1.1 存在个数最小生成树可能有多个,当有相同权值的边时,可以选择其中一条边。当图中每一条边的权值都相同,该图的左右生成树都是最小生成树;唯一性:当图中的每一条边的权值都不相同时,最小生成树是唯一的。1.2 切分定理 Cut Property在图中找到n-1条边,连接n个顶点,总权值最小;【切分】:把图中的结点分为两部分;【横切边】:如果一
2021-12-20 23:16:38 1312 1
原创 【数据结构C++基础】最小堆,min-heap
实现:最小堆:用二叉树构造,堆顶为最小元素用数组存储数据;从索引 0 开始存储;对于任意给定的 i 结点:如果该结点有左孩子,左孩子的结点所在的索引为 [2i];如果该结点有右孩子,右孩子的结点所在的索引为 [2i+1];该结点的父亲结点所在的索引为 [i/2]当树构造好之后,从索引 1 开始,将结点与左右孩子比较,若该结点比左右孩子都小,不用交换;继续下一个索引的结点;若当前结点比左右孩子其中一个大,与较小的交换;shifDown(int k) { while (2 * k
2021-12-17 01:58:58 2731
原创 【C++基础】stringstream
stringstream 将字符串对象与流相关联,允许从字符串中读取,有点类似cin方法:运算符 << :将字符串添加到 stringstream 对象;运算符 >> :从 stringstream 对象中读取内容;stringstream(const string& str):用 str 构造一个 stringstream 对象,应用场景:计算字符串中的单词个数:输入:“hello world c plus plus”输出:5#include
2021-12-11 19:23:20 867
原创 【数据结构基础C++】图论07-构造带权图
用一个Edge类描述顶点与边#pragma once#include <iostream>#include <cassert>using namespace std;template<typename Weight>class Edge {private: int a, b; Weight weight;public: Edge(int a, int b, Weight weight) { this->a = a; this-
2021-12-11 18:50:53 716
原创 【数据结构基础C++】图论应用-用四种颜色对地图上的国家涂色
思想存储:国家之间只有相邻和不相邻两种关系。把国家看作顶点,用边表示两个国家相邻。考虑到每个国家都要考虑相邻关系,用邻接矩阵存储。四种色号编号为1,2,3,4;国家序号用 0…n 表示;用色号循环方式,给国家涂色。在涂色前,先判断与当前国家相邻的国家的涂色情况:若与之相邻的国家的色号与当前国家色号相同,则用下一个色号涂色;核心函数:graphColor(int k);isSafe(int k,int color); 掌握这两个函数就可以了!以这几个省份为例:抽象成顶点与边的关系:代
2021-12-10 23:54:15 2633
原创 【数据结构基础C++】图论06-广度优先,无权图的最短路径
写一个最短路径的类,利用广度优先遍历算法记录无权图的最短路径代码#pragma once#include <iostream>#include <vector>#include <queue>#include <cassert>#include <stack>using namespace std;template<typename Graph>class shortestPath {private: G
2021-12-09 23:07:34 414
原创 【数据结构基础C++】图论05-利用深度优先算法查询路径
单独写一个路径的类,传入图和顶点,记录路径代码#pragma once#include <vector>#include <cassert>#include <iostream>#include <stack>using namespace std;template<typename Graph>class Path {private: Graph& G; bool* visited; int s;
2021-12-09 14:56:27 618
原创 【数据结构基础C++】图论04-深度优先遍历,图的连通分量个数
单独写一个连通分量的类代码#pragma once#include <iostream>using namespace std;template <typename Graph>class component {private: Graph& G; bool* visited; int ccount; int* connected; //将深度优先遍历写在私有里 void dfs(int v) { visited[v] = true
2021-12-08 22:58:15 621
原创 【数据结构基础 C++】图论03-以存储顶点和边的文件构造图
将边的信息放在txt中,以文件形式构造图,单独封装成一个类#pragma once#include <iostream>#include <fstream>#include <cassert>#include <string>#include <sstream>using namespace std;template<typename Graph>class readGraph {public: //从文件f
2021-12-08 21:37:04 363
原创 【数据结构基础C++】图论02-添加迭代器
在上一次的头文件中再添加一个类-迭代器,可用作后面测试用例稠密图迭代器代码class adjIterator { private: DenseGraph& G; int index; int v; public: //构造函数 adjIterator(DenseGraph& g, int v):G(g) { assert(v >= 0 && v < G.n); this->v = v; this->in
2021-12-07 21:05:15 775
原创 【数据结构基础C++】图论01
稠密图用邻接矩阵表示顶点之间的关系(是否有边)。有向图和无向图的区别:无向图顶点 v 到 w,w 到 v 都要在矩阵中标注,但是边数只加 1 次!写一个函数判断两个顶点之间是否有边,避免重复记录边数。用 vector<vector> 表示二维数组。//头文件#pragma once#include <iostream>#include <vector>#include <cassert>using namespace std;c
2021-12-04 23:31:25 503
原创 【汇编语言】王爽-1-5章小结
1.1-1.10 基础知识总结汇编指令是机器指令的助记符,同机器指令一一对应。每一种 CPU 都有自己的汇编指令集。CPU 可以直接使用的信息在存储器中存放。在存储器中指令和数据没有任何区别,都是二进制信息。存储单元从0开始顺序编号。一个存储单元可以存放8个bit,即8位二进制数。1Byte = 8bit,1KB = 1024Byte,1MB = 1024KB,1GB = 1024MB。每一个 CPU 芯片都有许多管脚,这些管脚和总线相连。也可以说,这些管脚引
2021-12-01 22:07:25 326
原创 【汇编语言】实验17-用逻辑扇区计算出面号、磁道号、扇区号,调用int 13h 中断例程进行实际读写
大佬帮我看看** 这个程序,我的目的是将扇区的内容读到指定的data段中,但是最终结果ah = FF,al = 01 ,al跟预期结果一样,但是ah=FF 按照书上的说法应该是操作失败了,相当于没做出来。还请懂的朋友帮我看看错在哪里了**源代码assume cs:codestack segment db 128 dup(0)stack endsdata segment db 512 dup(0)data endscode segmentstart: mov bx,stack m
2021-12-01 15:20:05 469
原创 【汇编语言】实验16-编写包含多个功能子程序的 int 7ch 中断例程
源程序assume cs:codestack segment db 128 dup(0)stack endscode segment start: mov ax,stack mov ss,ax mov sp,128 call init_reg call cpy_interrupt call set_interrupt mov ah,3 ;测试数据,3号功能,向前滚动一行 mov al,1 int 7ch mov ax,4c00h i
2021-11-30 17:55:25 243
原创 【汇编语言】实验15-在DOS下,按下‘A‘键后,除非不再松开,如果松开,就显示满屏幕的‘A’
源程序assume cs:codestack segment db 128 dup(0)stack endscode segmentstart: mov ax,stack mov ss,ax mov sp,128 call init_reg ;初始化寄存器 call cpy_int9 ;开始复制中断例程到 0000:0204 call set_int9 ;安装中断例程 mov ax,4c00h int 21
2021-11-29 14:14:44 240
原创 【汇编语言】实验14-访问CMOS RAM,以“年/月/日 时:分:秒”的格式,显示当前日期、时间
源程序assume cs:codecode segment unit: db 9,8,7,4,2,0 ;要访问的内存单元 mark: db '// :: 'start: call init_seg call visit_port_and_show ;访问端口数据显示日期,时间 mov ax,4c00h int 21h;======================================init_seg: mov ax,cs mov ds,ax
2021-11-27 21:58:13 950 1
原创 【汇编语言】检测点13.1-用7ch中断例程完成 jmp near ptr 指令的功能,用bx向中断例程传送转移位移
【过程】编写 7ch 中断例程将中断例程代码送入到 0000:0200处设置中断向量,将中断例程的入口地址 0000:0200 写入中断向量表中的7ch号表项中测试数据响应中断源程序assume cs:codedata segment db 'conversation',0data endscode segmentstart: call set_ds_es call cpy_interrupt call install_interrupt call test_data
2021-11-26 22:04:45 315
原创 【汇编语言】实验12-编写0号中断的处理程序
【过程】将中断处理程序放入0000:0200处将中断处理程序入口地址登记在中断向量表的对应表项中(除法溢出对应的中断类型码为0,它的中断程序的入口地址应该是从 0*4 地址单元开始存放,段地址在 0*4+2 字单元中)【源程序】assume cs:codecode segmentstart: mov ax,cs mov ds,ax mov si,offset do0 mov ax,0 mov es,ax ;es = 0000 mov di,200h
2021-11-25 17:25:22 562
原创 【汇编语言】实验11-编写子程序,字符串中的小写字母转变为大写字母
思想源程序;名称:letterc;功能:将以0结尾的字符串中的小写字母转变为大写字母;参数:ds:si 指向字符串首地址assume cs:codesgdatasg segment db "Beginners's All-purpose Symbolic Instruction Code.",0datasg endscodesg segmentbegin: mov ax,datasg mov ds,ax mov si,0 call letterc mov ax,4c0
2021-11-24 22:51:48 1703
原创 【汇编语言】实验10(3)-数值显示
源代码;子程序描述;名称:dtoc;功能:将word型数变为表示十进制数的字符串,字符串以0为结尾符;参数:ax=word型数据;ds:si指向字符串的首地址;返回:无;应用举例:编程,将数据12666以十进制的形式在屏幕的8行3列,用绿色显示出来。在显示我们调用本次实验的第一个子程序show_strassume cs:codedata segment db 10 dup(0) data endscode segmentstart: mov ax,12666 mov
2021-11-23 00:52:18 1733
原创 【汇编语言】实验10(2)-除法溢出
1.源程序,计算1000000/10;X:被除数,范围[0,FFFFFFFF] :dxax;N:除数,范围[0,FFFF] ;N = cx;H:X高16位,范围[0,FFFF] ;H = dx;L:X低16位,范围[0,FFFF] ;L = ax;int():描述性运算符,取商;rem():描述性运算符,取余数;公式:X/N=int(H/N)*65536+[rem(H/N)*65536+L]/N;先做公式的第一部分int(H/N)*65536; dx/cxassume c
2021-11-22 18:04:47 622
原创 【汇编语言】实验10(1)-编写子程序
1.题目2.源程序assume cs:codedata segment db 'welcome to masm!',0data endscode segmentstart: mov dh,11 ;行 mov dl,70 ;列 mov cl,24h ;颜色属性 mov ax,data mov ds,ax ;ds 指向数据段 mov si,0 ;用于迭代数据 call show_str ;IP入栈,调用子程序show_str
2021-11-20 20:38:56 467
原创 【汇编语言】实验七
第一遍摸索出来的,不是最优的,有点暴力解,刚入门1.题目2.我是这么理解的3.源程序assume cs:codesgdata segment db '1975','1976','1977','1978','1979','1980','1981','1982','1983' db '1984','1985','1986','1987','1988','1989','1990','1991','1992' db '1993','1994','1995' dd 16,22,38
2021-11-17 00:34:25 109
原创 【汇编语言】王爽实验6-将datasg段中的每个单词的前四个字母改为大写字母
1.题目2.源程序assume cs:codesg,ss:stacksg,ds:datasgstacksg segment dw 0,0,0,0,0,0,0,0stacksg endsdatasg segment db '1. display ' db '1. brows ' db '1. replace ' db '1. modify 'datasg endscodesg segmentstart: mov ax,data
2021-11-15 17:21:11 607
原创 【汇编语言】王爽实验5(6)将a段中的前8个字型数据,逆序存放到b段中
1.源程序assume cs:code,ss:copydataa segment dw 1,2,3,4,5,6,7,8,9,0ah,0bh,0ch,0dh,0eh,0fh,0ffha endsb segment dw 0,0,0,0,0,0,0,0b endscopydata segment dw 0,0,0,0,0,0,0,0copydata endscode segmentstart: mov cx,8 mov bx,0 mov ax,a mov ds,a
2021-11-14 16:24:19 620
原创 【汇编语言】王爽实验5(5)
实验5 第5小题,编写code中的代码,将a段和b段中的数据依次相加,将结果保存在c段中Note:对于 c 段,我在编译的时候提示错误,名称改成了 d观察es寄存器的内容
2021-11-13 18:45:03 402
原创 【汇编语言】王爽实验4-[bx]和 loop的使用
(1)编程,向内存0:200~0:23F 依次传送数据0~63用编辑器写源程序编译—连接 生成可执行文件在DOSbox中用 debug t2.exe 观察各个寄存器的内容1.用编辑器写源程序assume cs:codecode segment mov ax,0020H mov ds,ax mov bx,0 mov cx,64 s:mov ds:[bx],bl inc bx loop s mov ax,4C00H int 21Hcode endsend2.编译—连
2021-11-12 00:13:16 375
原创 【汇编语言】实验3-查看PSP内容
程序加载后,ds中存放着程序所在内存区的段地址,这个内存区的偏移地址为0,则程序所在的内存区的地址为 ** ds:0**这个内存区的前256个字节中存放得失PSP,DOS用来和程序进行通信。从256字节处向后的空间存放的是程序。从ds中可以得到PSP的段地址SA,PSP的偏移地址为0.则物理地址为SA*16+0当前 ds 为1C95,ds 加上256 个字节后,地址为 1C95*16 + 0100(256的十六进制)= 1CA50,所以CS:IP 的值为 1CA5:0000,也就是程序的入口地.
2021-11-10 22:34:13 2309
原创 【汇编语言】王爽第四章第一个程序
win7 系统,64位工具:编译器(masm)连接器(link)调试工具(debug)1.【源程序】:edit不能用,用的记事本写的2.修改文件名为 .asm 格式3.设置环境变量我的电脑——属性——高级系统设置——环境变量——path——masm路径4.【编译】打开 cmd,跳转到刚刚的文本路径下,命令 masm 1.asm如果执行成功,当前文件目录下会有一个目标文件 1.obj,此时编译完成;我的版本在执行masm时候,直接后面加文件名。有的直接运行masm就可以;
2021-11-10 17:19:43 260
原创 【汇编语言】查看主板生产日期,向显存单元写数据
1. 用Debug查看PC机主板上的ROM中的一个生产日期:在内存 FFFF0H ~ FFFFFH的某几个单元中;因为生产日期是在ROM中,只读不能写,不能改变数据;2.向内存从 B8100H 开始的单元中填写数据-e B810:0000 01 01 02 02 03 03 04 04...
2021-11-07 11:43:23 2048 1
原创 【汇编语言】实验1:查看CPU和内存
1.Debug的使用进入Debug用R命令查看CPU寄存器的内容当前 CS=1C8B,IP=0100,也就是说,内存1C8B:0100 处的指令为CPU当前要读取、执行的指令。3.修改ax寄存器的值4.命令 “d 1000:0”,列出1000:0处的内容;debug列出了 1000:0~1000:7F 中的内容;左边是每行的起始地址;右边是每个内存单元中的数据对应的可显示的ASCII码字符。如下图,第一行 十六进制 72,对应的ASCII码的字母是 ‘s’5.用命令**“e 1
2021-11-07 00:48:53 726
原创 【汇编语言】win10 安装debug
这里写自定义目录标题希望有所帮助!1.下载DOSBoxdosbox连接地址2.debug文件链接:https://pan.baidu.com/s/1WzmHziHBbtOM9tPK2OrpLw提取码:debu3.dosbox直接默认安装在C盘4.masm也放在C盘5.打开文件,至最后一行,加入以下代码6.启动桌面快捷DOSBox7.出现如下表示成功希望有所帮助!...
2021-11-06 18:48:39 353
原创 [Vue warn]: Invalid component name: “.-pages-smartRecommendation-questionStart-questionStart“. Comp
uniapp,找了半天,终于找到问题了,在pages.json 里面 path 的路径多了一个 .去掉就好了。我也不知到什么原理。
2021-01-22 10:06:18 1060
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人