
算法
jiangyu98
变幻中的徘徊之物,固定于永恒的思想中。
展开
-
求和最大子串(Kadane算法) 算法简明推理
Kadane算法目标:和最大子串目标性质: 目标前缀子串和与后缀子串和均大于0 我们分割源数组成若干子串。切割方式: 子串和小于0(除了最后一个子串之外) 子串的前缀子串和大于0 由1,2我们推得 子串的后缀子串和小于0 由1,3推得 目标是某一子串的子串(即目标不可能跨越多个子串) 然后...原创 2018-09-06 23:10:00 · 637 阅读 · 0 评论 -
排序算法(插入、选择、冒泡;希尔、归并、快排),带精心整理的代码
Table of Contents简单排序插入排序选择排序(不稳定)冒泡排序复杂排序希尔排序(不稳定)归并排序快速排序(不稳定)简单排序插入排序序列分为已排序和未排序两部分。 取一个未排序元素x,将已排序的元素中比x大的元素后移,然后将 x 插入空位。 其外层循环遍历的是未排序部分,其内层循环遍历的是已排序部分。 数据越有序,效率越高。void...原创 2019-05-19 17:25:38 · 404 阅读 · 0 评论 -
Collecting Bugs(POJ 2096)
一个软件有s个子系统,会产生n种bug。某人一天发现一个bug,这个bug属于一个子系统,属于一个分类。每个bug属于某个子系统的概率是1/s,属于某种分类的概率是1/n 。则每个子系统中找到至少一个bug,并且每个类别至少有一个bug所需天数的期望?dp[i][j]表示已经找到i种bug,j个系统的bug,达到目标状态的天数的期望.反解dp[i][j]可得dp[...原创 2019-05-09 16:19:30 · 435 阅读 · 0 评论 -
Warcraft III 守望者的烦恼(利用矩阵乘法求解线性递推关系)
头脑并不发达的warden最近在思考一个问题,她的闪烁技能是可以升级的,k级的闪烁技能最多可以向前移动k个监狱,一共有n个监狱要视察,她从入口进去,一路上有n个监狱,而且不会往回走,当然她并不用每个监狱都视察,但是她最后一定要到第n个监狱里去,因为监狱的出口在那里,但是她并不一定要到第1个监狱。守望者warden现在想知道,她在拥有k级闪烁技能时视察n个监狱一共有多少种方案?格式...原创 2019-05-09 16:16:49 · 715 阅读 · 0 评论 -
过河问题(动态规划)
在漆黑的夜里,N位旅行者来到了一座狭窄而且没有护栏的桥边。如果不借助手电筒的话,大家是无论如何也不敢过桥去的。不幸的是,N个人一共只带了一只手电筒,而桥窄得只够让两个人同时过。如果各自单独过桥的话,N人所需要的时间已知;而如果两人同时过桥,所需要的时间就是走得比较慢的那个人单独行动时所需的时间。问题是,如何设计一个方案,让这N人尽快过桥。假设N <= 1000。将N个旅行者的过桥时间...原创 2019-05-09 16:12:00 · 2411 阅读 · 1 评论 -
错排问题
若一个排列中所有的元素都不在自己原来的位置上,那么这样的排列就称为原排列的一个错排。这样的排列就称为原排列的一个错排。 n个元素的错排数记为D(n)。如在写信时将n封信装到n个不同的信封里,有多少种全部装错信封的情况?假设一开始所有元素都放在其对应的位置。现在从前n-1个元素中任意取一个元素并与最后一个元素A交换(n-1种可能),并将最后位置上的元素固定下来。然后根据元素 A 是否需要...原创 2019-05-09 16:09:45 · 265 阅读 · 0 评论 -
最短路径算法详述(Bellman-Fold,SPFA,Dijkstra,Floyd)
在求解最短路径问题之前,我们要假设图中不能包含源点可达的权值为负的环路。因为权值为负的环路会导致最短路径不存在。并且我要非常清楚最短路径算法一个重要性值:最短路径的子路径也是最短路径。一般来说,最短路径问题可以分为以下四种问题两点最短路径 单目的地最短路径 单源最短路径 所有节点对间最短路径两点最短路径一般来说,使用单源最短路径算法求解这个问题即可。因为,求解两点最短路径...原创 2019-04-02 20:40:44 · 2735 阅读 · 1 评论 -
词法分析器 C++
(1) 关键字:for if then else while do until int input output所有关键字都是小写。(2)运算符和分隔符:: = + - * / < > <= <> >= ; ( ) #(2) 其他标识符(...原创 2018-09-22 00:18:49 · 736 阅读 · 0 评论 -
大整数运算(加法、减法、乘法、除法、移位)
Table of ContentsBigNum 结构体定义工具函数getBigNumprintBigNumformat运算左移加法减法乘法除法完整代码C++JavaBigNum 结构体定义struct BigNum { int base; //进制 int len; //数字长度,数字0我们认为是1位 ...原创 2019-05-21 15:41:07 · 1924 阅读 · 0 评论