算法笔记

以下是为您整理出来关于【算法笔记】合集内容,如果觉得还不错,请帮忙转发推荐。

【算法笔记】技术教程文章

算法笔记--强连通分量分解【代码】

Kosaraju算法详见《挑战程序设计竞赛》p320模板:constint N=1e5+5; int n,m; vector<int>g[N]; vector<int>rg[N]; vector<int>vs; bool vis[N]; int cmp[N];void add_edge(int u,int v) {g[u].pb(v);rg[v].pb(u); } void dfs(int u) {vis[u]=true;for(int i=0;i<g[u].size();i++)if(!vis[g[u][i]])dfs(g[u][i]);vs.pb(u); }void rdfs(int u,int k) {vis[u]=true;cmp[u]=k;for(int i=0;i<rg[u].size();i++)if(!vis[rg[u][i]])rdfs(...

算法笔记_018:旅行商问题(Java)【代码】【图】

目录1 问题描述2 解决方案2.1 蛮力法 1 问题描述何为旅行商问题?按照非专业的说法,这个问题要求找出一条n个给定的城市间的最短路径,使我们在回到触发的城市之前,对每个城市都只访问一次。这样该问题就可以表述为求一个图的最短哈密顿回路的问题。(哈密顿回路:定义为一个对图的每个顶点都只穿越一次的回路) 很容易看出来,哈密顿回路也可以定义为n+1个相邻顶点v1,v2,v3,...,vn,v1的一个序列。其中,序列的第一个顶点和最后一...

算法笔记--图的存储之链式前向星【代码】

链式前向星这个博客写的不错:http://www.cnblogs.com/Tovi/p/6194786.html模板:①add_edge void add_edge(int u,int v,int w) {edge[cnt].to=v;edge[cnt].w=w;edge[cnt].next=head[u];head[u]=cnt++; } ②遍历以u节点为起点的所有边 for(int i=head[u];~i;i=edge[i].next) 原文:http://www.cnblogs.com/widsom/p/7637359.html

《算法》笔记 12 - 最短路径【代码】【图】

加权有向图数据结构 加权有向边加权有向图最短路径边的松弛Dijkstra算法地图或者导航系统是最短路径的典型应用,其中顶点对应交叉路口,边对应公路,边的权重对应经过一段路的成本(时间或距离)。在这个模型中,问题可以被归纳为:找出从一个顶点到达另一个顶点的成本最小的路径。此外,网络路由、任务调度等也属于同类问题。加权有向图加权有向图是研究最短路径问题的模型。在加权有向图中,每条有向边都有一个与之关联的权重,路...

算法笔记_206:第五届蓝桥杯软件类决赛真题(Java语言A组)【代码】【图】

目录1 海盗分金币2 六角幻方3 格子放鸡蛋4 排列序数5 幂一矩阵6 供水设施 1 海盗分金币有5个海盗,相约进行一次帆船比赛。比赛中天气发生突变,他们被冲散了。恰巧,他们都先后经过途中的一个无名的荒岛,并且每个人都信心满满,觉得自己是第一个经过该岛的人。第一个人在沙滩上发现了一堆金币。他把金币分成5等份。发现刚好少一个金币。他就从自己口袋拿出一个金币补充进去,然后把属于自己的那份拿走。第二个到达的人也看到了金币...

算法笔记_008:选择排序和冒泡排序【蛮力法】【代码】

目录1 问题描述2 解决方案2.1 选择排序原理简介2.2 具体编码(选择排序)2.3 冒泡排序原理简介 2.4 具体编码(冒泡排序) 1 问题描述给定一个可排序的n元素序列(例如,数字、字符和字符串),将它们按照非降序方式重新排列。2 解决方案2.1 选择排序原理简介选择排序开始的时候,我们从第一个元素开始扫描整个列表,找到它的最小元素,然后和第一个元素交换,将最小元素和第一个元素交换位置;然后,我们从第二个元素开始扫描剩下的...

常见算法笔记【代码】【图】

刷题过程中学了很多算法,但是都没有做个笔记==,写一下稍微留个印象~1.曼彻斯特算法首先用一个非常巧妙的方式,将所有可能的奇数/偶数长度的回文子串都转换成了奇数长度:在每个字符的两边都插入一个特殊的符号。比如 abba 变成 #a#b#b#a#, aba变成 #a#b#a#。 为了进一步减少编码的复杂度,可以在字符串的开始加入另一个特殊字符,这样就不用特殊处理越界问题,比如$#a#b#a#(注意,下面的代码是用C语言写 就,由于C语言规范还要...

操作系统之进程调度算法笔记

先了解一下概念: 1、对于单处理器系统,每一个时段只能有一个进程执行;当其中一个进程运行时,其他进程必须等待,直到当前执行的进程完成为止。 2、进程的执行周期总体可以看作CPU执行时间和IO执行时间相互交替。 3、进程调度有抢占调度和非抢占调度。抢占调度:进程由运行态切换为就绪态(中断),运行态切换为等待状态(等待I/O),等待状态切换为就绪态(I/O完成);非抢占调度:当一个进程在执行时,必须等待这个进程结束退出...

算法笔记(二)——浅析最好、最坏、平均、均摊时间分析方法

为了使时间复杂度评价方法在不同量级情况下,评价更为全面、更精确,于是又可分为以下四种评价方法: (一)最好情况时间复杂度: 即一个程序在最好情况下的时间复杂度,比如,找一个数组中的元素,第一次就找到元素的情况。 (二)最坏情况时间复杂度 即一个程序在最坏情况下的时间复杂度,比如,找一个数组中的元素,最后一次就找到元素的情况。 (三)平均情况时间复杂度 平均情况时间复杂度=(累加每个元素的时间复杂度+没有该...

算法笔记(一)——简述时间、空间复杂度分析【代码】【图】

前段时间通过小詹随笔分享的链接在极客时间购买了王争老师的《数据结构与算法之美》的课程,小詹学长果真是一个很靠谱的学长,凡是通过他的链接购买的课程,之后建有微信群,相互监督学习并分享学习笔记打卡。因此,在此,为表示对小詹学长的感谢,也简单介绍一下“小詹学Python”公众号,小詹学长是一名双一流高校在读研究生,专研c++,python,主要研究图像处理、计算机视觉和机器学习相关知识,定期带你打卡刷leetcode,锻炼编程...