算法分析与设计
算法分析与设计课程
幼儿算数
这个作者很懒,什么都没留下…
展开
-
Chapter3 动态规划
Chapter3 动态规划动态规划的基本思想动态规划算法与分治法类似,其基本思想也是将待求解问题分解成若干个子问题,先求解子问题,然后从这些子问题的解得到原问题的解。与分治法不同的是,适合用动态规划法求解的问题,经分解得到的子问题往往不是互相独立的。e.g.e.g.e.g.多阶段图最短路问题下图表示城市之间的交通路网,线段上的数字表示费用,单向通行由A→EA\to EA→E。求A→EA\to EA→E的最省费用。此图有明显的次序,可以划分为5阶段。故此问题的要求是:在各个阶段选取一个恰当的决原创 2020-10-05 20:07:55 · 480 阅读 · 0 评论 -
Chapter2 分治法
Chapter2 分治法对分治法思想的体会分治法的核心思想有三步确定问题的最小规模if (STATEMENT) return;划分子问题合并子问题 (有的时候不需要合并)二分搜索的应用在顺序数组中查找值时间复杂度:O(nlogn)O(nlogn)O(nlogn)Code#include <bits/stdc++.h>using namespace std;#define ll long long#define mod 1000000007co原创 2020-10-03 23:20:21 · 172 阅读 · 0 评论 -
算法第一章作业
算法第一章作业一、编码规范本学期我的编码满足Google开源代码规范https://zh-google-styleguide.readthedocs.io/en/latest/google-cpp-styleguide/下面列出一些比较常用并且重要的规范函数参数顺序总述函数的参数顺序为: 输入参数在先, 后跟输出参数.编写简短函数总述我们倾向于编写简短, 凝练的函数.说明我们承认长函数有时是合理的, 因此并不硬性限制函数的长度. 如果函数超过 40 行, 可以思索一下能不能在不原创 2020-09-15 23:38:55 · 130 阅读 · 0 评论 -
PTA-How Long Does It Take
How Long Does It Takehttps://pintia.cn/problem-sets/16/problems/674DescriptionGiven the relations of all the activities of a project, you are supposed to find the earliest completion time of the project.Input SpecificationEach input file contains one原创 2020-08-06 13:38:15 · 249 阅读 · 0 评论 -
Dijkstra 简单原理分析
Dijkstra适用范围单源点的最短路问题,时间复杂度为O(n∗m)O(n*m)O(n∗m)在经过查找顺序优化的条件下,可以达到O(mlogn)O(mlogn)O(mlogn),是最为高效的最短路算法原理解释准备工作一个辅助数组 Dis[k] 记录从原点到各个顶点终点的最短路,也就是答案D[k]=min(<源点到D[k]上弧的权值>,<源点到D[i]的路径长+D[i]到其他点的权值>)D[k]=min(<源点到D[k]上弧的权值>,<源点到D原创 2020-06-21 23:23:23 · 251 阅读 · 0 评论 -
PTA-地下迷宫探索-DFS
描述地道战是在抗日战争时期,在华北平原上抗日军民利用地道打击日本侵略者的作战方式。地道网是房连房、街连街、村连村的地下工事,如下图所示。我们在回顾前辈们艰苦卓绝的战争生活的同时,真心钦佩他们的聪明才智。在现在和平发展的年代,对多数人来说,探索地下通道或许只是一种娱乐或者益智的游戏。本实验案例以探索地下通道迷宫作为内容。假设有一个地下通道迷宫,它的通道都是直的,而通道所有交叉点(包括通道的端点)上都有一盏灯和一个开关。请问你如何从某个起点开始在迷宫中点亮所有的灯并回到起点?输入格式输入第一行给出三个原创 2020-06-10 23:36:19 · 335 阅读 · 0 评论 -
PTA-六度空间-BFS
PTA-六度空间-BFS描述“六度空间”理论又称作“六度分隔(Six Degrees of Separation)”理论。这个理论可以通俗地阐述为:“你和任何一个陌生人之间所间隔的人不会超过六个,也就是说,最多通过五个人你就能够认识任何一个陌生人。”如图1所示。“六度空间”理论虽然得到广泛的认同,并且正在得到越来越多的应用。但是数十年来,试图验证这个理论始终是许多社会学家努力追求的目标。然而由于历史的原因,这样的研究具有太大的局限性和困难。随着当代人的联络主要依赖于电话、短信、微信以及因特网上即时通信原创 2020-06-10 21:13:24 · 523 阅读 · 0 评论 -
计算中缀表达式
计算中缀表达式的总结后缀表达式是怎么产生的?中缀式转后缀式的方法加括号后移——适合在做客观题时候举个例子,一个式子:(5+20+1∗3)/14(5+20+1∗3)/14(5+20+1∗3)/14如何把该式子转换成后缀表达式呢?其实就是分三步:按运算符优先级对所有运算符和它的运算数加括号,(原本的括号不用加)把运算符移到对应的括号后去掉括号具体实现为:(((5+20)+(1∗3))/14)(((5+20)+(1∗3))/14)(((5+20)+(1∗3))/14)(((520)+原创 2020-06-02 23:23:08 · 1135 阅读 · 0 评论 -
KMP
基本概念match函数的直观理解1.match数组记录我们在遇到失配情况时需要回到pattern的哪个位置2.match(j)这个函数可以用文字表示成当指针指向p[j]时(不包含整个串自身的)从串头开始的一段子串和一段结束于p[j]的与前字串长度相等的字串如:前述的abca和abca—>位于j=0~6-1——不存在这样的子串高效的进行build match...原创 2020-05-07 20:56:12 · 915 阅读 · 0 评论