算法
文章平均质量分 77
xdgs_2005
这个作者很懒,什么都没留下…
展开
-
求s=a+aa+aaa+aaaa+aa…a(n个a)之值,其中a是一个数字。例如:1+11+111+1111+...
#include #include using namespace std;void Calc(int base, int num){ list sum; int carry = 0; //进位 int ones = 0; while(num > 0) { int mul = num原创 2012-07-04 18:59:49 · 5476 阅读 · 0 评论 -
libevent源码深度剖析七
libevent源码深度剖析七——事件主循环张亮 现在我们已经初步了解了libevent的Reactor组件——event_base和事件管理框架,接下来就是libevent事件处理的中心部分——事件主循环,根据系统提供的事件多路分发机制执行事件循环,对已注册的就绪事件,调用注册事件的回调函数来处理事件。1 阶段性的胜利 Libevent将I/O事转载 2015-03-21 23:10:04 · 386 阅读 · 0 评论 -
libevent源码深度剖析六
libevent源码深度剖析六——初见事件处理框架张亮 前面已经对libevent的事件处理框架和event结构体做了描述,现在是时候剖析libevent对事件的详细处理流程了,本节将分析libevent的事件处理框架event_base和libevent注册、删除事件的具体流程,可结合前一节libevent对event的管理。1 事件处理框架-event_base转载 2015-03-21 23:11:22 · 332 阅读 · 0 评论 -
libevent源码深度剖析五
libevent源码深度剖析五——libevent的核心:事件event张亮对事件处理流程有了高层的认识后,本节将详细介绍libevent的核心结构event,以及libevent对event的管理。1 libevent的核心-event Libevent是基于事件驱动(event-driven)的,从名字也可以看到event是整个库的核心。event转载 2015-03-21 23:11:45 · 349 阅读 · 0 评论 -
libevent源码深度剖析四
libevent源码深度剖析四——libevent源代码文件组织1 前言详细分析源代码之前,如果能对其代码文件的基本结构有个大概的认识和分类,对于代码的分析将是大有裨益的。本节内容不多,我想并不是说它不重要!2 源代码组织结构Libevent的源代码虽然都在一层文件夹下面,但是其代码分类还是相当清晰的,主要可分为头文件、内部使用的头文件、辅助功能函数、日志、转载 2015-03-21 23:12:39 · 333 阅读 · 0 评论 -
libevent源码深度剖析三
libevent源码深度剖析三——libevent基本使用场景和事件流程张亮1 前言学习源代码该从哪里入手?我觉得从程序的基本使用场景和代码的整体处理流程入手是个不错的方法,至少从个人的经验上讲,用此方法分析libevent是比较有效的。2 基本应用场景基本应用场景也是使用libevnet的基本流程,下面来考虑一个最简单的场景,使用livevent设置定转载 2015-03-21 23:13:16 · 426 阅读 · 0 评论 -
libevent源码深度剖析二
libevent源码深度剖析二——Reactor模式张亮前面讲到,整个libevent本身就是一个Reactor,因此本节将专门对Reactor模式进行必要的介绍,并列出libevnet中的几个重要组件和Reactor的对应关系,在后面的章节中可能还会提到本节介绍的基本概念。1 Reactor的事件处理机制首先来回想一下普通函数调用的机制:程序调用某函数?函转载 2015-03-21 23:14:51 · 337 阅读 · 0 评论 -
libevent源码深度剖析一
libevent源码深度剖析一——序幕张亮 1 前言Libevent是一个轻量级的开源高性能网络库,使用者众多,研究者更甚,相关文章也不少。写这一系列文章的用意在于,一则分享心得;二则对libevent代码和设计思想做系统的、更深层次的分析,写出来,也可供后来者参考。附带一句:Libevent是用c语言编写的(MS大牛们都偏爱c语言哪),而且几乎是无处不转载 2015-03-21 23:16:05 · 397 阅读 · 0 评论 -
数据库--sqlite的操作
一、数据库基本概念A.数据(Data)能够输入计算机并能被计算机程序识别和处理的信息集合。B.数据库(Database)数据库是在数据库管理系统管理和控制之下,存放在存储介质上的数据集合。注意:数据库管理系统(DataBase Mangement System) --DBMMSC转载 2015-04-08 14:07:41 · 386 阅读 · 0 评论 -
libevent源码深度剖析八
libevent源码深度剖析八——集成信号处理张亮 现在我们已经了解了libevent的基本框架:事件管理框架和事件主循环。上节提到了libevent中I/O事件和Signal以及Timer事件的集成,这一节将分析如何将Signal集成到事件主循环的框架中。1 集成策略——使用socket pair 前一节已经做了足够多的介绍了,基本方法就是转载 2015-03-21 23:07:41 · 340 阅读 · 0 评论 -
libevent源码深度剖析九
现在再来详细分析libevent中I/O事件和Timer事件的集成,与Signal相比,Timer事件的集成会直观和简单很多。Libevent对堆的调整操作做了一些优化,本节还会描述这些优化方法。1 集成到事件主循环 因为系统的I/O机制像select()和epoll_wait()都允许程序制定一个最大等待时间(也称为最大超时时间)timeout,即使没有I/O事件发生,它转载 2015-03-21 23:06:11 · 297 阅读 · 0 评论 -
编辑距离
一、问题描述设A和B是两个字符串。要用最少的字符操作将字符串A转换为字符串B。这里所说的字符操作包括: (1)删除一个字符; (2)插入一个字符; (3)将一个字符改为另一个字符; 将字符串A变换为字符串B所用的最少字符操作数称为字符串A到B的编辑距离,记为d(A,B)。试设计一个有效算法,对任给的两个字符串A和B,计算出它们的编辑距离d(A,B)。 二、分析解答转载 2012-07-05 17:08:19 · 674 阅读 · 0 评论 -
寻找最近点对
在有n(n>=2)个点构成的集合Q中寻找最近的点对。其中的最近是通常意义下的欧几里得距离,即,点p1={x1,y1},p2={x2,y2},则它们之间的距离为sqrt((x2-x1)*(x2-x1)+(y2-y1)*(y2-y1))。这一问题可应用于交通控制,以便于发现两个距离最近的交通工具,避免可能发生的交通事故。 分治算法: #include #include转载 2012-07-07 01:33:43 · 758 阅读 · 0 评论 -
有限状态机(FSM)的设计与实现(一)
有限状态机(FSM)是表示有限个状态及在这些状态之间的转移和动作等行为的数学模型,在计算机领域有着广泛的应用。通常FSM包含几个要素:状态的管理、状态的监控、状态的触发、状态触发后引发的动作。本文主要阐述一下状态机的几种设计方法。1:switch case/if else设计方法curEvent = getEvent();curState = getCurState();swi转载 2012-12-23 23:47:06 · 396 阅读 · 0 评论 -
有限状态机(FSM)的设计与实现(一)
分层状态机的设计:对于状态较多的状态机,通常的设计会维护一个庞大的二维矩阵,所有状态耦合在一起,这往往导致维护困难,由于可能存在许多公共的特性,也会导致许多状态具有相同的处理函数。针对这些问题我们可以通过设计分层状态机来解决,主要的思想就是根据不同的功能模块设计出多个状态机,各个状态机分布在不同的层次上。上层状态机调用下层状态机时,上层状态机入栈,下层状态机变为当前处理状态机。通常我们使用堆栈转载 2012-12-23 23:48:00 · 436 阅读 · 0 评论 -
判断点是否在多边形内
再经典不过的算法了: // 功能:判断点是否在多边形内 // 方法:求解通过该点的水平线与多边形各边的交点 // 结论:单边交点为奇数,成立! //参数: // POINT p 指定的某个点 // LPPOINT ptPolygon 多边形的各个顶点坐标(首末点可以不一致) // int nCount 多边形定点的个数 BOOL PtInPolygon (POI转载 2013-03-10 10:42:21 · 546 阅读 · 1 评论 -
计算几何与图形学有关的常用算法
3.6 用矢量的叉积判断直线段是否有交 矢量叉积计算的另一个常用用途是直线段求交。求交算法是计算机图形学的核心算法,也是体现速度和稳定性的重要标志,高效并且稳定的求交算法是任何一个CAD软件都必需要重点关注的。求交包含两层概念,一个是判断是否相交,另一个是求出交点。直线(段)的求交算法相对来说是比较简单的,首先来看看如何判断两直线段是否相交。转载 2013-03-10 11:35:10 · 522 阅读 · 0 评论 -
计算机视觉-TLD算法(一)
在分析 文章前先膜拜以下大神...TLD(Tracking-Learning-Detection)是英国萨里大学的一个捷克籍博士生Zdenek Kalal在其攻读博士学位期间提出的一种新的单目标长时间(long term tracking)跟踪算法。该算法与传统跟踪算法的显著区别在于将传统的跟踪算法和传统的检测算法相结合来解决被跟踪目标在被跟踪过程中发生的形变、部分遮挡等问题。同时,通过一原创 2015-01-24 18:37:20 · 742 阅读 · 0 评论 -
编程之美 读书笔记(寻找最大的k个数)
实际的情况我觉得往往要考虑到数的范围,数的特点(整数还是浮点,重复多不多)以及K与数组长度N的比例关系,数组长度N是否超出内存大小等等因素。问题:有很多无序的数,姑且假定它们各不相等,怎么选出其中最大的若干个数呢?实际可能的应用场景1从1亿个qq号码中选出最值钱的5000个2从2亿张图片中选出点击率最高的100张算法一:直接选择排序、冒泡排序时间复杂度: o(N^2)转载 2015-03-10 08:45:43 · 416 阅读 · 0 评论 -
机器学习-决策树
决策树 机器学习原创 2016-07-02 23:20:53 · 584 阅读 · 0 评论