数据结构
嘻嘻嘻嘻
MayObserver
致力于教会 幼稚园 小朋友——什么是算法?
展开
-
Dijkstra算法——基本原理 + 各部分本质及其衍生操作
Dijkstra背景Dijkstra是研究单源 最短 路径长度的算法且 边长度/权值 不能有负数注:且大部分题目都以无向边形式呈现Dijkstra原理解析Dijkstra的思路是更新2个表,其中有mark:标记点是否被访问过 path:走到每个点的权值/路径 其他追加记录:可访问表(略)写法上Dijkstra有3个模块;模块0:设定初始状态1、visit设定全false 2、path设定全为INT_MAX,起始点为03、定义 每次访问的点;最小路经...原创 2020-07-23 13:56:55 · 708 阅读 · 0 评论 -
1165 Block Reversing——链表题的通解:隐式散列+用二维数组分块
同类型基础题1161-Merging Linked Lists进阶题——分块题1133 Splitting A Linked List分析设置3个下标完全对应的数组(构建隐式散列) 为了快速获得下标,构建map映射 地址——》下标 由于无法获得二维数组恰好的层数,因此采取尽可能大的策略(块3 9/3=3层 10/3=3则需要4层) 层数=quantity/block+1;这样无论如何都不会超出边界 插入二维数组时,按照 块满 ,则层数+1 的方式来累进摆放 同时对于 .....原创 2020-07-21 13:14:59 · 244 阅读 · 0 评论 -
前序+中序建树——(合理范围下)1.打印树到各个叶节点深度 2.打印由树根到叶子的每条路径
#include<bits/stdc++.h>#pragma warning(disable:4700)#pragma warning(disable:4996)#pragma warning(disable:4703)using namespace std;typedef struct node { int key; struct node* lchild, * rchild; node(int x) { key = x; lchild = rchild = NULL原创 2020-05-25 03:23:44 · 243 阅读 · 0 评论 -
递归版本的Dijkstra算法
一些细节1. 起点默认设置为5,可以自定义2. 并不需要传递起点,起点的初始化体现在dist[start] = 0;3. visit为最后的输出数组4.默认地点为正整数,因此设置mark0为truemark[0] = true; 因此sit作为下标,从1开始,来确定在visit的插入位置具体递归原理,自行理解;测试数据输入5 71 2 21 5 12 3 12 4 12 5 23 5 13 4 1输出5 1 3 2 4...原创 2020-06-09 19:54:26 · 414 阅读 · 0 评论