算法分析:求解最长公共子序列

算法分析系列文章中的代码可被任何人无偿使用于任何场景且无需注明来源也不必在使用前征得本文作者同意。

算法分析系列文章旨在传播准确、完整、简洁、易懂、规范的代码实现,并传授基本的编程思想和良好的编码习惯与技巧。

若文章中的代码存在问题或逻辑错误,请通过邮件等形式(见文章结尾)告知于本文作者以便及时修正错误或改进代码。

算法系列文章不可避免地会参考和学习众多网友的成果,在行文风格、内容及求解思路上也会进行借鉴,如有侵权嫌疑,请联系本文作者。

PS:若为转载该文章,请务必注明来源,本站点欢迎大家转载。

问题描述

如果序列 中的所有元素按照其在 中的出现顺序依次出现在另一个序列 中,则称 子序列

子序列不要求位置的连续性(即,元素相邻),只要相对顺序不变即可。

若给定一个序列集合(数量大于或等于2,但通常为两个序列),则这些序列所共同拥有的子序列,称为公共子序列。而在这些公共子序列中长度最长的子序列则称为该序列集合的最长公共子序列(Longest Common Sequence, LCS)。

本例所要求的便是求解任意两个序列的最长公共子序列(可能存在多个不同的序列),并打印其长度及其其中的任意一个序列。

阅读更多
算法分析:求解最大子段和

算法分析系列文章中的代码可被任何人无偿使用于任何场景且无需注明来源也不必在使用前征得本文作者同意。

算法分析系列文章旨在传播准确、完整、简洁、易懂、规范的代码实现,并传授基本的编程思想和良好的编码习惯与技巧。

若文章中的代码存在问题或逻辑错误,请通过邮件等形式(见文章结尾)告知于本文作者以便及时修正错误或改进代码。

算法系列文章不可避免地会参考和学习众多网友的成果,在行文风格、内容及求解思路上也会进行借鉴,如有侵权嫌疑,请联系本文作者。

PS:若为转载该文章,请务必注明来源,本站点欢迎大家转载。

问题描述

给定一个整数(正负数不限)序列 $a_1, a_2, a_3, …, a_n$ ,从该序列中选取任意相邻的一段求和(简称为「子段和」),求解该序列的最大子段和。注:若整个序列的所有元素均为负数,则其最大子段和固定为0。

例如,序列[64, -24, 88, -39, -54, 16]的最大子段和为128(= 64 + (-24) + 88)。

阅读更多
算法分析:求解斐波那契数列

算法分析系列文章中的代码可被任何人无偿使用于任何场景且无需注明来源也不必在使用前征得本文作者同意。

算法分析系列文章旨在传播准确、完整、简洁、易懂、规范的代码实现,并传授基本的编程思想和良好的编码习惯与技巧。

若文章中的代码存在问题或逻辑错误,请通过邮件等形式(见文章结尾)告知于本文作者以便及时修正错误或改进代码。

算法系列文章不可避免地会参考和学习众多网友的成果,在行文风格、内容及求解思路上也会进行借鉴,如有侵权嫌疑,请联系本文作者。

PS:若为转载该文章,请务必注明来源,本站点欢迎大家转载。

问题描述

从0和1开始,之后的每一个数均为前两个数的和,这样性质的数依次排列,便称为斐波那契数列。即形成如下数列形式:

1
0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, ...

用数学公式表示该数列即为:

本案例所要解决的就是:给定一个整数n,求解斐波那契数列中第n项的数值。注意,0表示第零项,而不是第一项。

阅读更多
算法分析:分治法求解给定集合中的众数及其重数

算法分析系列文章中的代码可被任何人无偿使用于任何场景且无需注明来源也不必在使用前征得本文作者同意。

算法分析系列文章旨在传播准确、完整、简洁、易懂、规范的代码实现,并传授基本的编程思想和良好的编码习惯与技巧。

若文章中的代码存在问题或逻辑错误,请通过邮件等形式(见文章结尾)告知于本文作者以便及时修正错误或改进代码。

算法系列文章不可避免地会参考和学习众多网友的成果,在行文风格、内容及求解思路上也会进行借鉴,如有侵权嫌疑,请联系本文作者。

PS:若为转载该文章,请务必注明来源,本站点欢迎大家转载。

问题描述

给定含有n个元素的多重集合S,每个元素在S出现的次数称为该元素的重数。多重集S重数最大的元素称为众数mode)。

例如,S={1,2,2,2,3,5},则,多重集S的众数是2,其重数为3

注:众数可能存在多个。

本案例要求采用分治法求解给定集合中的众数及其重数,存在多个众数时选择第一个即可。

分治法,即,把一个复杂的问题分成两个或更多的相同或相似的子问题,直到最后子问题可以简单的直接求解,原问题的解即子问题的解的合并。(引用自「维基百科」)

阅读更多
记一次惊心动魄的CentOS系统升级经历
阅读更多
Nginx特例场景配置

本文所使用的相关代码片段可从 https://github.com/flytreeleft/docker-nginx-gateway 得到完整内容。

Nginx随机展示自定义错误页面

Source code: https://github.com/flytreeleft/docker-nginx-gateway/tree/master/config/error-pages
Custom error pages: https://github.com/flytreeleft/docker-nginx-gateway/tree/master/examples/epage.d/all

关键字

  • 随机展示多个错误页面
  • Nginx自定义错误页面

在访问HTTP站点时最容易出现的错误就是404,于是就有许多非常有个性的404错误页面。而为我们自己的站点放置一些简洁、清爽的错误页面,在资源再利用的前提下,也将为我们自身增加不少好感和亲和力。

这里将要介绍的便是如何为我们的站点配置自定义错误页面,并同时支持为相同错误随机展示不同的错误页面。

阅读更多
未来社会形态畅想

The post isn’t finished yet, it will be updated anytime!

无现金社会

提要:

阅读更多
作恶行为清单

列举日常和网络中所发现的软件、应用、服务等的「作恶」行为,将其永久钉在「耻辱柱」上。有条件的或有候选方案的,应主动弃用之!
坚持开放、坚持自由。点击下载自由软件自由社会.pdf
就事论事,不针对个人、企业、平台,挖掘现象本质,努力尝试寻找更优方案

为逼迫用户使用客户端而阉割Web端的基本功能

阅读更多
软件开发最佳实践

The post isn’t finished yet, it will be updated anytime!

阅读更多
软件开发行为准则

The post isn’t finished yet, it will be updated anytime!

谨慎对待用户隐私

提要:

  • 不是仅用户确认后的数据才算是「用户隐私」,任何与用户相关的数据都应该「默认」视为用户隐私,不需要任何形式的确认
    而只有经过用户确认和同意的数据方可用作其他用途,且前提必须是明确告知数据为何要做次用途,以及将被如何利用、涉及哪些风险等
阅读更多