自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

oRbIt 的专栏

从明天起,做一个幸福的人,喂马、劈柴、周游世界。。。

  • 博客(51)
  • 资源 (11)
  • 收藏
  • 关注

原创 开篇词 | 算法是程序的“灵魂”

大家好,我是王晓华,网名 orbit。2015 年出版了一本书,名为《算法的乐趣》,以“趣味性”为着手点,介绍了二十多个趣味算法的原理和实现,主要目的是希望读者了解到算法并非是枯燥、抽象的代码,算法的设计和应用是一件十分有趣的事情。做为一本非典型的算法书,许多读者学习后觉得意犹未尽,希望能以更系统的方式来介绍各类算法的设计和实现,同时介绍更多分析问题的方法和抽象问题数据模型的技巧,而这正是本课程的...

2020-09-22 12:18:04 2109

原创 第1-1课:如何“玩”算法

既然是“玩”算法,首先要会玩,否则只会被算法“玩死”。很多朋友啃完了《算法》、《算法导论》或其他算法书籍,对各种排序、搜索、遍历等常用算法了如指掌,但是遇到实际的问题时还是束手无策,这与智力无关,这其实就是经验和方法集的问题。很多啃过算法书的朋友都知道堆排序和最大最小堆,但是却不能有效地应用到实际问题中。例如,某算法书介绍 Dijkstra 算法时,提到当问题规模比较大时,每次查找 dist...

2020-09-22 12:18:03 1453

原创 第1-2课:算法设计常用思想之贪婪法

算法作为智力活动的结果,并不是随机头脑风暴活动的产物,虽然因人而异,会有不同的结果,但是基本上它应该是遵循一定规律的活动结果。首先,它需要一些基础性的知识作为这种智力活动的着力点,比如相关领域的数学知识、各种数据结构的掌握等;其次,它需要对问题域做充分的分析和研究,高度概括并抽象出问题的精确描述,也就是各种建立数学模型的方法;最后,有一些常用的模式和原则,可以作为构造算法的选择项,有人将其称...

2020-09-22 12:18:01 1601

原创 第1-3课:算法设计常用思想之分治法

在第 1-2 课中介绍了算法模式中的贪婪法,这一课我们继续介绍分治法。分治,顾名思义,分而治之。分治法(Divide and Conquer)也是一种解决问题的常用模式,分治法的设计思想是将无法着手解决的大问题分解成一系列规模较小的相同问题,然后逐个解决小问题,即所谓分而治之。分治法产生的子问题与原始问题相同,只是规模减小,反复使用分治方法,可以使得子问题的规模不断减小,直到能够被直接求解为...

2020-09-22 12:18:00 2147

原创 第1-4课:算法设计常用思想之迭代法

上一课我们介绍了算法模式中的分治法,这一课继续介绍迭代法,我们一般在求解一个问题的时候,都是使用明确的方法或计算公式,带入已知量,一次性求得问题的解。但是如果用计算机解决这些问题,常常因为各种原因无法直接求解,比如求解一元高次方程的问题。针对这种情况,人们提出了很多迭代法来近似求解这类问题,比较常见的有梯度法、最小二乘法和牛顿迭代法,只要问题的解是可收敛的(或者是局部可收敛的),都可以使用迭代法求...

2020-09-22 12:17:58 3021

原创 第1-5课:算法设计常用思想之动态规划法

上一课我们介绍了迭代法, 这一课来介绍算法设计思想(模式)中最飘逸的动态规划法,说它飘逸的原因是因为这种算法思想的原理很简单,但是落地(实现)困难。所谓落地困难是因为子问题的分解和决策状态的定义需要有相当的经验,而这种经验需要大量的实践之后才能建立起来。动态规划既不是阳春白雪般的高大上,但也不是那么就能掌握的技能,这一课我们先简单介绍一下动态规划,随后的课程里会有一系列的内容来介绍各种类型的动态规...

2020-09-22 12:17:57 732

原创 第1-6课:算法设计常用思想之穷举法

这一课我们来介绍穷举法,有一些人把穷举法视为上不了台面的低级方法,这种想法是错误的,虽然穷举思想的原理简单,但是用穷举思想设计一个算法却一点也不简单。各种算法模式或思想没有高下之分,关键在于你是否能灵活运用,更不用说很多著名的算法也会在某个局部应用穷举的思想了。某些最优解问题,如果有多个最优解,还只能用穷举法才能把这些最优解都找出来。有时候,为了验证动态规划算法的解是否正确,也会用穷举法来辅...

2020-09-22 12:17:55 1782

原创 第1-7课:基础开胃菜

本系列前几课分别介绍了算法的常用设计模式、建立数据模型的常用思路和方法。其实,用代码实现的算法肯定还会包含一些代码特有的技巧,这一课就来介绍一些这样的技巧。这些巧妙构思的代码技巧,有些体现了效率,有些体现了程序设计的一致性原则,有些则体现了软件架构的一些好思想;这些技巧,都可以在今后的算法设计中直接或间接使用,即使用不上,了解这些内容对于开阔思维还是很有益处的,更不用说其中一些技巧都是常见或不常见...

2020-09-22 12:17:54 1035

原创 第2-1课:非线性方程与牛顿迭代法

在数值分析领域中,人们通常使用迭代法、逼近法和做图等方法来求解一些复杂问题的近似解,其中迭代法是一类利用递推公式或循环算法通过构造序列来求问题近似解的方法,把这种迭代求解数学问题的方法直接体现在算法中,就可以认为是设计领域中的迭代法。在《算法设计常用思想之贪婪法、分治法和迭代法》这几课中我们介绍了迭代法的原理以及将迭代的思想应用到算法设计中,那么就需要确定三个关键点,这三个关键点确定后,算法...

2020-09-22 12:17:52 1785

原创 第2-2课:线性代数方程组的求解

多元一次方程组,又称为线性代数方程组。在数值分析领域里有很多算法都会用到线性代数方程组的求解,比如三次样条曲线拟合时用到的插值算法。求解线性代数方程组可以用高斯消元法,高斯消元法是一种代数的方法,其主要思想是通过对系数矩阵进行行变换,将方程组的系数矩阵由对称矩阵变为三角矩阵,从而达到消元的目的,最后通过回代逐个获得方程组的解。这和手工求解多元一次线性方程组的解体思想是一致的,类似于各种公式法...

2020-09-22 12:17:51 3327

原创 第 2-3 课:迭代法计算定积分

这一课我们介绍两种计算数值积分的常用算法,分别是变步长梯形公式法和变步长辛普森公式法。首先从梯形公式入手来推导出复合梯形公式法,在实现复合梯形公式法的基础上,再实现变步长梯形公式法。同样,变步长辛普森公式法也是从辛普森公式入手的,首先实现复合辛普森公式法的算法,然后再实现变步长辛普森公式法。这两种变步长的方法都是使用了迭代法的思想,但是和之前几课中介绍的迭代法略有不同。之前介绍的牛顿迭代法、...

2020-09-22 12:17:50 2576

原创 第3-1课:装配线与工作站问题(穷举)

第一次看到“装配线与工作站问题”是老师在课堂上出的一个题目,当时脑子简单,直接就用穷举法给解了,后来看到《算法导论(第二版)》这本书用的是动态规划算法来解决的,实际测试后发现其效率是穷举法的四、五倍,感觉十分神奇,后来理解了动态规划的原理之后,也就不觉得神奇了。 第 3 部分的内容是介绍穷举法在算法设计中的应用,所以我们先介绍如何用穷举法来解决这个问题,当介绍第 4 部分动态规划内容时,...

2020-09-22 12:17:48 1289

原创 第3-2课:用三个水桶等分 8 升水的问题

有这样一个智力题目:有三个分别是 3 升、5 升和 8 升容积的水桶,其中容积为 8 升的水桶中装满了水,容积为 3 升和容积为 5 升的水桶是空的,三个水桶都没有体积刻度。现在需要把大水桶中的 8 升水等分成两份,每份都是 4 升水,附加条件是只能使用这 8 升水和另外两个空水桶,不能借助其他容器或更多的水。问题分析好莱坞电影《虎胆龙威 3》中,布鲁斯·威利斯饰演的纽约警探约翰·麦克...

2020-09-22 12:17:47 2403

原创 第 3-3 课:狼、羊、菜和农夫过河问题

农夫需要把狼、羊、菜和自己运到河对岸去(不知道为啥要运狼,别问我),只有农夫能够划船,而且船比较小,除农夫之外每次只能运一种东西,还有一个棘手的问题,就是如果没有农夫看着,羊会偷吃菜,狼会吃羊。请考虑一种方法,让农夫能够安全地安排这些东西和他自己过河。算法设计思路这是一个很简单的问题,在狼、羊和菜这个食物链上,关键是中间的羊,因为狼不吃菜,所以要安全过河,农夫的第一件事就是带羊走,拆开...

2020-09-22 12:17:45 3930

原创 第3-4课:爱因斯坦的思考题(上)

不同问题的穷举法算法实现最大的差异点就是搜索算法的不同,前几课介绍了线性空间的搜索、树状空间的搜索,这一课我们再介绍一种求解问题的搜索算法,其搜索的空间是一个二维表,对二维表中的每个元素进行枚举遍历,依次确定每个表格元素的值,当二维表中所有表格元素的值都确定后,检查其结果是否符合问题的解的要求,如果满足要求,则输出一个结果,如果不满足要求,则按照一定的顺序继续遍历各个表格元素的值。这也是一种...

2020-09-22 12:17:44 634

原创 第3-4课:爱因斯坦的思考题(下)

接上一课,我们继续分析搜索算法是如何实现的。搜索算法实现与其他穷举类算法一样,本问题的穷举法的实现也包含两个典型过程,一个是对所有状态的穷举过程,另一个是对状态的正确判定过程。本问题的穷举搜索过程明显比之前的几个题目复杂,因为每个状态有 5 个类型,每个类型都要对 5 个值进行排列组合。枚举所有状态前几课介绍了几个线性空间的搜索和树状空间的搜索的例子,这些例子中的状态都比较简单,可以边遍历...

2020-09-22 12:17:42 591

原创 第3-5课:24 点计算器

24 点游戏是一个很有意思的数字游戏,也是一道常见的算法面试题。题目是这样的:任给四个数(为了便于人们心算或口算,一般都是小于 10 的数),对四个数字用各种组合进行加、减、乘、除四则运算,看看结果是否能等于 24?对于面试题来说,这是一个典型的穷举类型算法问题。这个题目比较有意思的地方是它除了要对数字组合进行枚举,还要对四个运算符进行组合。这一课我们要介绍的方法有点特殊,它没有简单地使用穷...

2020-09-22 12:17:41 694

原创 第3-6课:多点同线问题

这一课我们介绍一个计算几何方面的穷举类算法问题。计算几何类的问题也是算法问题中的一个大的分类,并且在很多其他算法中都会用到一些几何公式,比如三角形剖分问题中如果是按照三角形的面积做最优剖分,则需要用到根据三角形的边长求面积的海伦公式。这一课我们用到的几何内容不多,只用到了求直线斜率的公式,主要还是为了演示穷举法的应用;同时还会介绍到一个用一遍扫描统计出有序序列中哪个值出现次数最多的代码技巧和...

2020-09-22 12:17:40 1459

原创 第3-7课:推箱子游戏

推箱子游戏也是一个很经典的益智类小游戏,很多推箱子游戏软件都提供过程演示的功能,当玩家走投无路的时候,可以看看游戏给出的解答过程,这个过程其实就是游戏自己推算出来的最佳推箱子路线。这一课我们就来试试用穷举法求解推箱子游戏。游戏介绍图(1)展示了一个典型的推箱子游戏的截图,左边是游戏的初始状态,右边是游戏成功结束的状态。游戏在一个二维平面“地图”上操作,游戏开始时有若干只箱子和与之数量相...

2020-09-22 12:17:38 1552

原创 第3-8课:如何设计递归函数

这一篇内容是根据读者的反馈,补充了一些原来课程中没有规划的内容。考虑到有的读者不经常去读者圈提问题,在此建立一个读者群,扫描群二维码可以加群讨论:(若群满了,可加“madacui”微信号拉您进群,请备注:算法读者,谢谢~)另外,本课程的代码请戳这里。如何分析递归程序递归不是“先有鸡还是先有蛋的问题”,也不是“从前有座山,山里有座庙…”,严格来说,递归应该不是算法设计,而是算法实现范畴的内...

2020-09-22 12:17:37 792

原创 第3-9课:浮点数和大数

整数的范围“玩”算法,对各种类型的“数”能表达的数据范围要心里有数。8 位有符号整数能表示的范围是 −128 到 127,无符号时能表示的范围是 0 ~ 255。16 位的有符号整数能表示的范围是 −32768 到 32767,无符号时能表示的范围是 0 ~ 65535。32 位的有符号整数能表示的范围是 −2,147,483,648 到 2,147,483,647,无符号时能表示的范围...

2020-09-22 12:17:35 485

原创 第4-1课:如何理解动态规划法

在基础部分,我们介绍了动态规划法的两个重点和实现动态规划法的四个步骤,在第 4 部分动态规划中,我们将介绍一系列动态规划类的算法例子,这些例子覆盖一维动态规划、串模型的动态规划、区间模型动态规划以及状态压缩类型的动态规划,但是在开始之前,先通过几个简单的例子,帮助大家进一步理解动态规划。如何理解动态规划动态规划法中有几个概念比较抽象,一个是重叠子问题,一个是最优子结构,还有一个是子问题...

2020-09-22 12:17:34 336

原创 第4-2课:装配线与工作站问题

在前面的内容中,我们介绍过用穷举法设计“装配线与工作站问题”的算法实现,这一课我们将介绍如何用动态规划法设计这个问题的算法实现。两种不同的设计思想它们的算法实现肯定也是相差千里,穷举法中的遍历过程需要算法代码显式控制,而动态规划法的遍历过程则是算法本身隐含的,说具体一点,就是隐含在状态递推的过程中。在开始本课的内容之前,请大家再回忆一下第4-1课的内容,用动态规划思想设计算法实现,需要明确的...

2020-09-22 12:17:32 711

原创 第4-3课:凸多边形最优三角剖分问题

凸多边形上的最优三角剖分问题也是动态规划经典题目,此类问题基本上都是在一个给定的凸多边形上规划三角形分割,使得剖分后得到的一系列三角形的某种结果最优,比如三角形的面积之和最大(或最小),或者是三角形的各边权重之和最大(或最小)等。这一课,我们要介绍的题目是要求根据三角形的权重之和最小来剖分多边形,结合这个题目,希望大家能够掌握如何分析此类问题,并用动态规划的方法设计出求解此类问题的算法实现。...

2020-09-22 12:17:31 1516

原创 第4-4课:状态压缩与动态规划

什么是状态压缩动态规划问题中重要的一环就是确定状态的定义,在大多数情况下,状态中所包含的信息并不多,比如线性规划问题的状态一般表示为 d[i,j](i 表示状态的位置,j 表示状态的阶段),算法实现时可用二维数组保存计算过程中的状态。但是也有一些问题,它的状态中包含的信息很多,比如它的状态可能是一个集合中各个元素的情况,或者是像铺瓷砖问题这样,是某一行的覆盖状态。如果沿用简单的状态表示方法,则可...

2020-09-22 12:17:30 370

原创 第4-5课:铺瓷砖问题

铺瓷砖、铺地板、在电路板上嵌入芯片等问题,都属于一类问题,基本上可以描述为在一个 N × M 的平面空间中摆放一些形状固定的物品,要求覆盖整个平面空间,问有多少种摆放方法。在某些情况下还会增加一点难度,比如在平面上标记一些位置为“坏”点,摆放物品时要避开这些位置等。这类问题传统上是使用状态压缩的动态规划方法解题,因状态递推关系复杂,常用深度优先搜索(DSF)辅助状态的遍历。近些年也流行使用轮...

2020-09-22 12:17:28 1544

原创 第4-6课:矩阵链乘问题

这一课介绍的矩阵链乘问题,是区间类型动态规划的典型例子,区间类型的动态规划是在线性动态规划基础上的扩展。我的理解是,这个扩展就是将固定的线性问题变成一个变长的线性问题,也就是说,所谓的区间动态规划,就是在一个可选择的线性区间中寻找某种最优的结果,而线性区间长度本身也是可变化的,最优结果的组合也是可变化的,需要在两重变化中寻找最优解。除了矩阵链乘问题,此类问题的典型例子还有石子合并问题、能量项...

2020-09-22 12:17:27 420

原创 第4-7课:投资问题

动态规划理论最早被提出来的时候,是用来解决资源的有效分配问题。这一课要介绍的投资问题,有个通用的模式,那就是总资源量有限,要分配给若干个项目,每个项目都有一个投入与收益的关系,最终的问题是求如何规划在不同项目上的投资,使得收益能够最大化。问题分析这一类问题有很多,我们找了个典型的例子,即项目投资问题。假设有数量为 M 的资金,计划用于 N 个投资项目,每个项目投入的资金和获得的回报用一...

2020-09-22 12:17:25 559

原创 第4-8课:方块消除游戏

前面基础部分我们介绍过简单的串模型的动态规划,在这个系列中,我们又介绍了区间动态规划模型、状态压缩动态规划模型和线性动态规划模型。我们用的算法实现都是尽量使用状态递推关系式直接用递推的方法,大家可能都忘了“备忘录(或状态记忆)”也是动态规划,这一课我们将讲解如何用这种方法来求解方块消除游戏的算法实现。问题介绍Jimmy 最近迷上了一款叫做“方块消除”的游戏。游戏的规则是:n 个带颜色的...

2020-09-22 12:17:24 2680

原创 第5-1课:匈牙利算法与二分图的最大匹配

在图论中,二分图(又称二部图)是一个特殊的模型,关于二分图有很多概念,比如匹配、完全匹配、最大匹配等。这一课我们来介绍一种求二分图的最大匹配的匈牙利算法,匈牙利算法原理是公开的,人们使用匈牙利算法都是根据自己问题域的数据模型,利用算法原理实现具体的算法。这一课我们的关注点仍然是怎么根据算法原理设计数据模型,并实现算法。二分图的各种匹配首先介绍一下二分图,二分图 G=(V,E) 是这样的...

2020-09-22 12:17:23 321

原创 第5-2课:图的拓扑排序

拓扑排序常用来确定一个依赖关系集中、事物发生的顺序。一个典型的应用场景就是在项目管理或工程实施中安排各种生产活动的计划,在考虑各种活动的依赖关系的基础上,安排各种活动的开始时间,使得项目或工程能够以高效合理的速度完成。这些功能通常需要在基本的拓扑排序算法基础上进行适当的改造,本课仿照的项目管理软件功能实现的“根据活动开始时间排序”算法,就是一种这样的改造。图的拓扑排序涉及的概念有:有向无环图...

2020-09-22 12:17:21 428

原创 第5-3课:Dijkstra 算法

Dijkstra 算法是有中文名字的,一般叫做“迪杰斯特拉算法”,该算法是求解单源最短路径问题的经典算法,算不上高效,但确实是最简单的算法。Dijkstra 算法并不难,很多算法书都有详细的说明,但是这些书基本上都是对着一个类似图(1)这样的图作为例子来演示算法。如果要理解算法的原理,通常这样做也就足够了,但是要实现一个可用的算法解决实际问题,还需要跨过几个门槛才行。首先要解决数据模型的问题...

2020-09-22 12:17:19 788

原创 第5-4课:欧拉图与弗罗莱(Fleury)算法

很多人都玩过“一笔画”游戏,能一笔画成的图要么是所有点的连接边数都是偶数的情况,要么是连接边数是奇数的点有且只有两个的情况,第一种情况从任何点开始都可以完成一笔画,第二种情况只能从其中一个奇数点开始到另一个奇数点结束才能一笔画成。它的原理就是我们这一课要介绍的欧拉图(Euler)和欧拉回路(Euler Circuits),从图论的角度看,有向图和无向图都有欧拉回路的概念,但是判定的方法不一样...

2020-09-22 12:17:18 1024

原创 第5-5课:最大流问题(图文篇)

原计划这一课是要讲解最小费用最大流问题,但是图文课每一篇如果字数太多会给手机阅读带来困难,加上读者圈朋友的反馈希望多讲一些基础的内容,因此这一课我们降低点难度,只讲最大流问题。最小费用最大流问题,其实也是在最大流问题的基础上加入类似最短路径算法(SPFA)这样的思路,叠加形成算法,最后的总结部分我会简单介绍一下在最大流算法的基础上实现最小费用最大流问题的两种常用方法,但是这一课,我们只讲最大...

2020-09-22 12:17:16 3464

原创 第5-6课:关键路径算法

作为一个项目经理或工程总监,他最关心的两个问题就是工程是否能顺理进行和整个工程的最短完成时间。第5-2课讲了拓扑排序算法,对应了第一个问题的解决方案,这一课将介绍关键路径算法,就是为了解决第二个问题,最短完成时间常常由工程活动中的关键路径决定,只有这个路径上的一系列活动顺理开展,项目或者工程的最短时间才有保证。图的关键路径算法强调图中边的关系,我们引入了 AOE 网(Activity On ...

2020-09-22 12:17:15 969

原创 第6-1课:A* 算法

在第3-7课:推箱子游戏中,我们已经应用了 A* 算法,但是并没有展开介绍该算法的原理,这一课来补上。A(A-Star)算法和 Dijkstra 算法一样,都是求最短路径的搜索算法,不过 Dijkstra 算法比较直接,上来就是 BFS 搜索;A 算法则用了一点“启发”技术,所谓的启发,其实都是很简单的距离向量的判断。但是不要小看这一点“启发”,会使得 A* 算法在搜索效率上优于 Dijks...

2020-09-22 12:17:13 632

原创 第6-2课:决策树、博弈树和行为树

在以各种“XX学习”为代表的人工智能技术普及之前,游戏里常见的角色 AI 都是各种预设的行为逻辑,比如博弈树和行为树,当然也会用到各种专家知识库。当这些预设的行为逻辑足够复杂的时候,往往会让游戏玩家觉得游戏里的人物很“智能”。从本质上来说,这些都还不算是真正的 AI,但也能够给游戏的体验增加很多乐趣,这一课我们就来介绍三种常见的给角色预设行为逻辑的方法,分别是决策树、博弈树和行为树。决策...

2020-09-22 12:17:12 3972

原创 第6-3课:博弈树与井字棋(Tic-Tac-Toe)

上一课简单介绍了博弈树,从编程实现算法的角度看,博弈树是三种树中最简单的一种,无论是原理还是实现都不复杂。这一课,我们就以简单的井字棋(Tic-Tac-Toe)游戏为例,介绍一下如何用博弈树实现一个简单的井字棋 AI,最后的结果并不复杂,我希望大家把关注点放在如何设计数据模型、如何确定落子,以及将博弈树的理论应用到具体的问题等这样的过程上,而不是最后的结果。Tic-Tac-Toe——规则...

2020-09-22 12:17:10 4223

原创 第6-4课:奥赛罗游戏的棋盘模型和估值算法

在之前的课程中,我一直提到棋类游戏的棋盘模型用一维数组最好,井字棋游戏里用了一次,这一课再用一次。这一次要说的可是大名鼎鼎的“Warren Smith 棋盘模型”,很多棋类游戏都使用的是这个棋盘模型,或者是其衍生出来的改进模型。奥赛罗棋的估值算法有很多种,这一课我们也介绍一种简单的估值算法,为了提高搜索算法的效率,需多棋类游戏都使用空位链表技术,避免在整个棋盘上盲目地搜索,这一课将介绍如何组...

2020-09-22 12:17:09 1637

原创 第6-5课:五子棋游戏的相关算法

五子棋的复杂程度要超过之前介绍的奥赛罗棋,它不仅规则多,概念也多,比如“冲二”、“冲三”、“活二”、“三三禁手”、“四四禁手”等,对这些模型的判断其算法非常重要,如果不能正确判断这些型,估值函数就无法实现。这一课我们将介绍一些五子棋游戏的算法,当然,也包括棋盘的数据模型设计。棋盘模型五子棋(Five In a Row,FIR)流行非常广泛,在不同的国家有不同的名称,标准的五子棋棋盘是 ...

2020-09-22 12:17:07 2564

duilib+libcef 显示一个炫酷的罗盘钟(C++)

duilib+libcef 创建一个浏览器控件,通过控件加载 javascript,显示抖音上很火的罗盘钟

2024-06-04

使用 dlib 库的人脸检测识别代码(C++)

使用 dlib 库的人脸检测识别代码,使用 HoG-SVM 检测人脸,使用 5 点面部地标模型进行人脸矫正,使用 resnet 残差网络模型进行人脸特征值提取和比较

2024-05-31

基于 webview2 的 duilib 插件,显示炫酷的罗盘钟

一个基于 webview2 的 duilib 插件,创建一个 CWebView2UI 控件,显示抖音炫酷的罗盘钟

2024-05-30

TabSiPlus_bin.zip

TabSiPlus 最新版本,支持 Source Insight 4.x 版本。

2019-08-25

thunderbird 2_0_0_16 中文语言包

thunderbird 2_0_0_16 中文语言包 用thunderbird的源代码编译后没有中文界面的解决方法可参看链接 http://blog.csdn.net/orbit/archive/2008/09/06/2891622.aspx

2008-09-06

firefox 3_0_1 中文语言包

firefox 3_0_1 中文语言包, 用firefox的源代码编译后没有中文界面的解决方法可参看链接 http://blog.csdn.net/orbit/archive/2008/09/06/2891622.aspx

2008-09-06

boost 用户手册(很多已经翻译成中文)

boost 用户手册(很多已经翻译成中文),针对1.34.1 版本,不过对于学习来说够了

2008-09-06

Google Breakpad 源代码

如果你开发了一个需要发布到用户电脑上的客户端小程序,你当然不会在程序的可执行文件中包含符号表之类的调试信息,你当然也不想麻烦你的用户在程序崩溃时把计算机抱来给你检修——但你却一定想知道,万一你的程序在用户的计算机上崩溃,该如何了解崩溃那一刻程序的状态,特别是对程序调试至关重要的堆栈状态呢? 试试Breakpad吧,无论你的程序运行在Windows平台,Mac OS X平台还是Linux平台,Breakpad都可以帮你截获程序崩溃那一刹那的重要信息。利用Breakpad,你可以在程序中加入自己的灾难响应装置,就像为程序加装安全气囊。你可以获取程序崩溃时可能为后期调试提供帮助的所有重要信息。你还可以在自己的灾难响应代码中把这些重要信息发回给自己,然后利用符号分析和调试工具,在不需要接触用户环境的情况下找到程序的错误原因。

2008-09-06

TCPIP 详解卷2的源代码(一个完整的TCPIP协议栈)

TCPIP 详解卷2的源代码(一个完整的TCPIP协议栈)

2008-09-06

cppunit-1.12.1

单元测试工具 cppunit 的最新版本

2008-09-06

Visual Studio .NET使用技巧手册

Visual Studio .NET使用技巧手册,涵盖VS2002,2003和2005

2008-09-06

Herb Sutter - Conversation 经典对话系列

本人收集并珍藏的Herb Sutter - Conversation经典对话系列,共59篇,包含最后一篇的作者通知,也就是结束语

2008-09-06

用Visual Studio 2005编译Firefox所需要的补丁

用Visual Studio 2005编译Firefox所需要的两个头文件补丁,替换系统原来的头文件可以解决用Visual Studio 2005编译Firefox的错误

2008-08-18

Source Insight文件标签外挂TabSiPlus 源代码

TabSiPlus for Source Insight外挂插件的源代码,版本是0.99b1

2008-01-21

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除