自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

dzyhenry的专栏

Do one thing, do it good.

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

原创 CentOS 6.x 系统安装+网卡驱动安装(Realtek PCIe GBE Family Controller for linux)

GNU/Linux的安装过程中实际上已经安装了很多可用的网卡驱动,但这一款:Realtek PCIe GBE Family Controller的驱动却没有。而我的台式机:惠普 HP Pro 3380 MT刚好使用的是这一款网卡。由于没有网络,而CentOS6.x又没有预装gcc,g++编译环境,着实折腾了很久。下面总结一下安装过程:1  用光盘(或者U盘)制作映像文件。注

2015-01-04 17:32:35 32497 2

原创 大数加减法总结

大数加减法总结(包括整数或者负数):1、先解决不带符号的数的加减法2、根据加数或者减数的符号位判断该选择加法还是减法计算,并且赋予结果对应的符号需要注意的是:不带符号的减法产生的结果可能高位为‘0’,要进行处理。string bigNumberMinusWithoutSign(const char* num1, const char *num2){ string res =

2014-10-20 00:22:50 3158

原创 乐视TV2015校园招聘A卷第二大题(中国科学院大学站)

题目描述:给定数组A,大小为n,数组元素为1到n的数字,不过有的数字出现了多次,有的数字没有出现。请设计算法和程序,统计哪些数字没有出现,哪些数字出现了多少次。能够在O(n)的时间复杂度,O(1)的空间复杂度要求下完成么?(思路和代码)参考:http://mp.weixin.qq.com/s?__biz=MjM5ODIzNDQ3Mw==&mid=200446711&idx=1&sn=0

2014-09-30 14:55:52 1794

原创 整数数组的组合问题

2015年9月16日,美团南京站南京邮电大学笔试题目之一。大致的题意是这样的:有一个元素各不相同的整数数组,输入元素的所有组合,长度由大到小。例如:[1, 2, 3, 4],依次输出1234,123,134,234,12,13,14,23,24,1,2,3,4思路:1、设输出的组合的长度为m(m2、把数组分为两个部分:第一个数和后面的m-1个数3、如果组合里包含第一

2014-09-17 16:57:52 1468

原创 输入阿拉伯数字(整数),输出对应的中文(美团网2014年9月16日笔试题目之一)

2014年9月16日,美团网南京笔试题之一。原要求是输入整数的位数最多为四位,这里扩展为12为,即最高到前一级别。思路及步骤:1 判别输入是否合法,并过滤字符串最前面的‘0’。2 将字符串划分成四位一组的形式,其中每一组四位整数的输出方式相同。如20402040,其前四位和后四位都是2040,都输出“二千零四十”,只不过前四位要添上‘万’字而已。3 将8~12位、4~8位、0~4位

2014-09-17 15:07:18 3124

原创 C++实现二叉树的前序、中序、后序非递归扁历

这三种常见的扁历方式,是考研面试等场合经常遇到的,在此做一个总结。1、前序遍历比较简单:用指针p指向根节点,若p!=NULL且栈非空,则直接访问节点,并将节点的右孩子入栈,同时指针p向左孩子移动。2、中序扁历:用指针p指向根节点,若p!=NULL且栈非空,则当前节点入栈,同时指针p向左孩子移动,出栈是指针指向当前节点的右孩子。3、后序扁历相对复杂:需要设置一个辅助栈,标识该节点是否是第

2014-09-09 16:31:31 1031

原创 用JavaScript和CSS实现“在页面中水平和垂直居中”的时钟

实现起来最麻烦的其实是水平居中和垂直居中,其中垂直居中是最麻烦的。考虑到浏览器兼容性,网上看了一些资料,发现在页面中垂直居中确实没有什么太好的办法。于是就采用了position:fixed属性控制时钟的绝对位置,通过clientWidth和clientHeight来获取时钟的宽和高,利用javascript控制marginLeft和marginTop来居中时钟。

2014-08-31 10:51:26 2116

原创 原生javascript实现拖动元素

本文介绍原生javascript实现元素拖动。思路:1.首先改变被拖动元素的布局属性,关键是“position:absolue”;2.捕捉鼠标事件"mousedown","mousemove","mouseup";3.当触发"mousedown"时,记录下当前鼠标在元素中的相对位置,_x,_y;4.紧接着处理"mousemove"事件,通过改变元素的top和left属性来移动元

2014-08-26 23:46:09 2447

原创 SQL Server2005及以上 存储过程分页方法分享

最近实习期间,项目开发过程中遇到了分页问题,问题如下:        在项目开发过程中,往往会遇到展示展示内容的问题。当内容数量不多的时候,我们直接用一条“SELECT * FROM ...”将去不内容提取出来也无伤大雅。但是,随着项目的不断扩大,将过多的内容展示在一个页面就显得不合理了,此时,就要用到分页技术。其实分页,包括前台分页和后台分页。所谓前台分页:就是一次性后天存储设备取出

2014-03-29 10:25:07 2235 2

原创 《设计模式》笔记1.1-What is a Design Pattern?

其实也不能说刚刚开始接触软件开发,但其中的一些关键性概念往往知其然不知其所以然,例如为什么我们要面向对象、为什么要建立工厂模式、为什么要多态等等。所以找来了这本《设计模式》——大家公认的经典。目标是今年12月31日之前啃完,并记录笔记,以此博客为证。1.1 What is design pattern?什么是设计模式呢?Christopher Alexander says,"Each pa

2013-11-02 10:55:56 885

原创 HDOJ 1074 Doing Homework

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1074 题目大意:题意分析:1、根据题意,我们需求所有课程的全排列情况的被罚分数,再从中选取最小的一种排列。虽然课程最多只有15门,但总共有15!种情况,这样做肯定会超时。2、通过观察我们发现:假如我们把课程的选择当成一种状态的转移,初态时选择了零门课程,终态时所有课程选择完毕。则,

2013-05-31 19:58:28 1251

原创 HDOJ 1072 Nightmare

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1072 题目大意:判断是否能走出迷宫,若不能走出,输出-1,若能走出,求走出迷宫的步数?如果没有走到重置的点,一次最多走5步(迷宫中:0表示wall;1表示空白;2表示起点;3表示出口;4表示可以重置步数为6). 题意分析:1、本题属于常见的搜索题,可采用广度优先搜索。2、但,本

2013-05-29 18:41:01 725

原创 编程珠玑(2)第十五章学习笔记

`我们生活在一个字符串的世界里。位字符串构成了整数和浮点数,数字符串构成了电话号码,字母字符串构成了单词,长字符串可以形成网页,更长的字符串则形成书。在遗传学家的数据库和人的细胞里,存在着由字母A、C、G和T表示的极长的字符串。 我们的第一个问题是:为文档中包含的单词生成一个列表。我们的第一个C++程序用到了标准模板库中的sets和strings。主要思想就是用set的insert函数直接

2013-05-28 15:05:58 777

原创 HDOJ 1069 Banana and Monkey

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1069 题目大意:求摞砖块的最大高度?已知长宽高的n种砖块,每种砖块的选取数量不限,砖块可以以其任意面堆叠,即:长宽高各不同的砖块相当于三个砖块。但要求放在下面的砖块的面积必须比上面的砖块面积大,并且下面的砖块的长和宽必须大于堆在其上面的砖块。题意分析:根据题意,求这些砖块在题意的限制(0、

2013-05-25 20:25:49 1648

原创 编程珠玑(2)第十四章学习笔记之“堆”

本章主要介绍“堆”和“优先队列”数据结构的使用。堆可分为大根堆和小根堆。堆是某个节点的值总是不大于(大根堆)或不小于(小根堆)其父节点的完全树。常见的堆有二叉堆和斐波那契堆,本章讲的是二叉堆。由于二叉堆是完全二叉树,所以我们在建堆的时候可以考虑用C++中的vector来作为存储结构。堆有两个比较重要的操作:插入和删除。插入时,我们一般将新插入的元素放在末尾,这时需要做向上调整;删除时一

2013-05-17 20:38:42 768

原创 编程珠玑(2)第十三章学习笔记

本章题目是搜索。研究的题目是这样的:在没有其他相关数据的情况下,如何存储一组数组?这个问题虽然很小,但却能引发在数据结构实现中出现的许多关键问题。除了直接调用C++的模板库,作者提出了自己实现接口的四种解决方案。库的作用。C++标准模板库提供了一个实现起来很容易,并且维护和扩展也比较简单的通用解决方案。当遇到设计数据结构的问题时,我们的第一反应是寻求解决问题的通用工具。但本章中,专用的代码可以

2013-05-16 23:15:21 702

原创 编程珠玑(2)第十二章学习笔记 取样问题

本章讲取样问题,亦即随机数的生成问题,这是不论在实际生活中还是在学习应用中都常常碰到的问题。本章需要解决这样一个问题:怎样生成m个有序的且范围在0到n-1之间的不重复的随机数?通过分析可得:此问题的需求至少有三点:m个有序的、不重复的、范围在0到n-1之间的随机数。 第一种解决方案:来自Knuth的The Art of Computer Programming。该算法依次考虑整数0

2013-05-11 16:24:01 756

原创 编程珠玑(2)第十一章学习笔记

本章主要介绍了插入排序和快排。         关于排序,在平时写程序过程中,我们往往直接使用库函数qsort或者是sort,但有时候对接口使用函数调用会不那么高效,我们可能会需要自己来写排序算法。         分析了插入排序和快排的时间复杂度,以及一些改进方案。关于插入排序和快排,其实是老生常谈了,但通过作者的娓娓道来,原来就是一个很简单的排序算法,如果不断改进,也总有余地。下面我把

2013-05-11 14:54:49 757

原创 HDOJ 1053 Entropy

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1053 题目大意:求输入的字符串的霍夫曼编码的编码效率。题意分析:此题思路比较简单,基本原理就是大学数据结构中的霍夫曼编码的实现:把给每个字符在字符串中出现的次数作为该字符的权值,然后建立二叉树存储该字符,权值越小,在二叉树中的深度越深,权值越大,在二叉树中的深度越浅。方法就是: 1

2013-05-05 20:57:19 948

原创 HDOJ 1059 Dividing

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1059 题目大意:有6种marbles,其价值分别为1…6,每种marbles有一定的数量,请问是否可以将这些marbles分成两部分,每部分的价值总量相等,即等于所有marbles的总价值的一半。 题意分析:我们可以考虑用01背包或者多重背包的问题解决。至于01背包和多重背包问题,可参

2013-05-04 14:36:13 663

原创 背包(01背包、完全背包、多重背包)问题总结

以前也写过01背包问题的博文,但理解并不深刻,前几天在做HDOJ1059这道题的时候,在网上搜了下,原来背包问题远不止01背包问题那么简单,当然,01背包问题是基础。于是参考了网上非常经典的一篇文章:http://love-oriented.com/pack/#sec5问题定义:先看一看比较经典的三个背包问题的问题原型。 01背包问题:         有N个物

2013-05-04 14:03:05 1489

原创 编程珠玑(2)第十章学习笔记

本章,作者讨论了程序开发中空间利用的问题。在计算机诞生之初,由于存储设备的限制,计算机内存往往只有64k、128k等等,所以如何有效利用空间对于程序员是一个非常重要的问题。现今,尽管存储设备非常先进,普通个人计算机的内存往往都能达到2GB、4GB、8GB,有些超级计算机内存甚至能达到1TB,但是,随着大数据时代的来临,我们需要处理的数据也越来越庞大,计算机的空间的有效利用仍不是一个无足轻重的话题。

2013-04-30 08:29:23 1137

原创 HDOJ 1063 Exponentiation

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1063 题目大意:求R(0.0 分析题意:此题一看便知道是关于大数乘法的问题,属于比较常见的问题。我的解题思路是这样的:先将浮点数乘法转化为正整数乘法,然后再加小数点1、   将输入的R从浮点数转换成正整数,并记录下小数位数。2、   于是此题就转变为大数整数乘法,大数整数乘

2013-04-29 22:32:03 848

原创 HDOJ 1045 Fire Net

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1045题目大意:对于一个迷宫,其中’X’ 表示wall,‘.’表示空地,可以放置blockhouse,同一条直线上只能有一个blockhouse,除非有wall隔开,问在给出的图中最多能放置多少个blockhouse。 分析题意:1、  此题有两种解法。第一种:暴力解法。从左往右,从上到

2013-04-26 21:59:26 672

原创 HDOJ 1025 最长递增字串

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1025题目大意:有两行按编号升序排列的城市,相对的城市希望彼此修筑道路,且互相修路的配对是事先安排好的,要求所修的道路两两不相交,问最多能修多少条道路? 分析题意:1、显然,可以根据配对,先将一边的(poorcities)城市按从小到大的顺序排列,按次顺序,然后求另一边的城市(rich

2013-04-25 18:24:37 1015

原创 HDOJ 1044 Collecting More Jewels

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1044此题系BFS和DFS的结合使用,需要理解BFS和DFS的特点。BFS:对于解决最短或最少问题特别有效,而且寻找深度小,但缺点是内存耗费较大,需要开辟大量的数组单元来存储状态。DFS:对于解决遍历和求所有问题有效,对于问题搜索深度小的时候处理迅速,然而在深度很大的情况下效率不高。

2013-04-25 09:07:30 949

原创 HDOJ 1011 树形DP

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1011由于一开始没理解到题意,这道题纠结了很久。所以先通俗地讲讲题意吧。1、首先,此题的cavern(大山洞)实际上一棵树。树上的每个节点(room)有一定数量的bugs和brains。树上的节点是联通的,n个节点有n-1个隧道。2、作为startrooper的leader的你,将带领你的部

2013-04-23 18:01:20 1470

原创 编程珠玑(2)第九章学习笔记

引言:             有些程序员过于关注程序的效率;由于太在乎细小的“优化”,他们编写出的程序过于精妙,难以维护。而另外一些程序员很少关注程序的效率;他们编写的程序有着清晰漂亮的结构,但效率极低以至于毫无用处。优秀的程序员将程序的效率纳入整体考虑之中:效率只是软件中众多问题之一,但有时候也很重要。             本章“代码调优”,作者通过讲述Chris Van Wyk的

2013-04-15 18:07:38 864

原创 C++模板类实现“堆”的经典案例学习+(优先队列)

本文转自:《C++程序设计》   Y. Daniel  Liang著  王刚,刘晓光,刘璟 译, 机械工业出版社             简单介绍堆的概念:堆,实际上就是一颗完全二叉树,它的每个节点的值都大于等于其任何孩子节点的值。             堆是二叉树,因此可用二叉树的结构描述,但是,如果堆的大小预先可知的话,更为有效的描述方法是使用向量或数组。下面的代码使用的向量

2013-04-12 15:24:05 1095

原创 HDOJ 1023 卡特兰数

原题链接:http://acm.hdu.edu.cn/showproblem.php?pid=1023参考文章:http://baike.baidu.com/view/2499752.htm?fromId=1163998                    http://hi.baidu.com/dybivzbhnucdxzr/item/d48bb01d6c3d644ce65e0607

2013-04-04 17:30:31 1385

原创 杭电ACM 1015 很笨的暴力解法

题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=1015#include#include#includeint comp(const void *a, const void *b){ return *(int*)b-*(int*)a;}int main(){ int n; char s1[13]; int a[

2013-04-01 21:05:09 1419 1

原创 HDOJ 1006 Tick and Tick

这道题比较自己看到后比较迷茫,在网上搜了下,发现大部分都是直接给出代码,具体解题思路不容易一下看明白,自己花了些时间,将思路整理了下。题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1006        这道题目需要求时针、分针、秒针之间的间隔区间大于某个角度(这个角度由用户输入)的总时间占一天之中总时间的比例。可以这样理解:1、

2013-03-29 00:42:19 1930

原创 编程珠玑(2)第八章学习笔记

第八章,作者通过对最大子段和问题的深入探讨,讲解了时间复杂度对算法设计的影响。在实际中,程序实现指定功能可能会有多种方法,此时我们考虑的不仅是功能的实现,还需要在功能实现的基础上考虑算法的时间复杂度。       在最大子段和的问题上,作者先后分析了四种实现方式,对其时间复杂度做了理论分析,并且对不同数量级的数据进行了实际运行时间的统计。通过这样一系列的介绍,作者总结了几个重要的算法设计技术:

2013-03-26 13:14:46 681

原创 编程珠玑(2)第七章 学习笔记之粗略估算

通过简单的粗略估算我们能够得到接近需要复杂计算的真实值,实在是让人惊叹估算的魅力。        在日常生活中,我们常常会遇到需要快速算出粗略值的时候,以便对问题有一个大体的把握,这个时候粗略估算的技巧就显得十分重要了。本章介绍了“量纲检验”、“模9法”、“72法则”、“Little定律”等,而更多的技巧需要我们在日常生活中根据实际问题运用常识开动脑筋来把握。        量纲检验:即在

2013-03-12 22:12:15 1206

原创 编程珠玑(2)第六章笔记

第六章通过介绍Andrew Appel解决重力场中多个物体相互作用的经典“n体问题”,形象地表现了我们对程序的性能进行提高的过程。        Appel主要通过五个层面来进行项目的性能改进:1、算法和数据结构。2、算法调优。3、数据结构重组。4、代码调优。双进度浮点数可改为单精度;某些函数可以改用汇编语言实现。5、硬件。使用性能更好的硬件。        看完本章,

2013-03-12 21:44:41 1139

原创 编程珠玑(2)第五章 学习笔记

在前四章中,分别讲述了:通过深入挖掘定义正确的问题;通过仔细选择算法和数据结构平衡真正的需求;通过程序验证技术写出优雅代码,并验证程序的正确性。          在这一章中,作者主要介绍了验证程序的一个重要方法:“脚手架(scaffolding)”。在编完代码后,我们使用脚手架来探察代码,以便更彻底地验证代码。作者介绍了如何根据程序的逻辑,在适当的代码位置添加“print”函数,输出变量,根

2013-03-11 16:22:13 1099

原创 编程珠玑(2)第四章阅读笔记

读完第四章,依然感觉迷茫,作者举的例子似乎很简单,但其中蕴含着深刻的编程原理,即程序验证——如何编写正确的程序。          作者在本章语重心长地强调了程序验证对于正确地编写程序的重要性。他说:“编写简单的代码通常是得到正确程序的关键。当我们编写程序的时候,经常会出现这样的情况,”困难“的部分第一次就可以正确运行,而那些”容易“的部分往往会出毛病。”我自己在编程过程中,也有这种感受,有时

2013-03-07 23:26:30 887

原创 编程珠玑(2)第三章阅读笔记

看完第三章,感觉比较迷茫,抓不住什么实在的东西。           第三章核心是“数据决定程序结构”。大致意思就是根据数据的形式,安排合适的数据结构,而成形的数据结构基本也决定了程序的结构。           本章最后列出了四条编程的原则,在这里赘述下:           1、使用数组重新编写重复代码。           2、封装复杂结构。           3、尽可

2013-03-07 22:34:58 723

原创 编程珠玑(2)第二章学习笔记

第二章提出了三个问题。                问题A:个定一个最多包含40个亿随机排列的32位整数的顺序文件,找出一个不在文件中的32位整数。在内存足够和只有几百个字节的内存的情况下,分别该如何解决这个问题。        问题B:将一个n元一维向量向左旋转(即循环移位)i个位置。例如,当n=8,且i=3时,向量abcdefgh旋转为defghabc。能否使用数十个

2013-03-06 14:54:37 1102

原创 编程珠玑(2)第一章学习之位图排序

上研快半年了,由于第一年属于上课阶段,导师也没怎么管,感觉自己还是本科那种碌碌无为的状态,知识停于书本,没有真正写出过什么像样的产品。叫我如何不焦虑!焦虑也没办法啊,所以就到网上买了本《编程珠玑》(第2版),下决心认认真真学习。对于我这样愚笨的人虽不见得会有奇效,但总比继续停在原地的好。于是,我打算以此博客为证,在今年7月之前(也就是2013年6月31日为止):将每一章(总共十五章)的问题用此博客

2013-03-02 02:49:43 803

spidermonkey1.7.0

Spidermonkey, a JavaScript engine on Linux.After downloading, unzip it. Do as follows: wget http://ftp.mozilla.org/pub/mozilla.org/js/js-1.7.0.tar.gz -O- | tar xvz cd js/src make -f Makefile.ref sudo mkdir -p /usr/include/smjs/ -v sudo cp *.{h,tbl} /usr/include/smjs/ -v cd Linux_All_DBG.OBJ sudo cp *.h /usr/include/smjs/ -v sudo mkdir -p /usr/local/{bin,lib}/ -v sudo cp js /usr/local/bin/ -v sudo cp libjs.so /usr/local/lib/ -v

2014-11-23

linux spidermonkey1.7.0

Spidermonkey 1.7.0 for Linux。解压后安装方法: wget http://ftp.mozilla.org/pub/mozilla.org/js/js-1.7.0.tar.gz -O- | tar xvz cd js/src make -f Makefile.ref sudo mkdir -p /usr/include/smjs/ -v sudo cp *.{h,tbl} /usr/include/smjs/ -v cd Linux_All_DBG.OBJ sudo cp *.h /usr/include/smjs/ -v sudo mkdir -p /usr/local/{bin,lib}/ -v sudo cp js /usr/local/bin/ -v sudo cp libjs.so /usr/local/lib/ -v

2014-11-23

spidermonkey1.7.0 for linux

spidermonkey,Linux中的JavaScript运行环境。解压后安装方法: cd js/src make -f Makefile.ref sudo mkdir -p /usr/include/smjs/ -v sudo cp *.{h,tbl} /usr/include/smjs/ -v cd Linux_All_DBG.OBJ sudo cp *.h /usr/include/smjs/ -v sudo mkdir -p /usr/local/{bin,lib}/ -v sudo cp js /usr/local/bin/ -v sudo cp libjs.so /usr/local/lib/ -v

2014-11-23

基本排序算的实现

用C/C++复习一下常见的几种排序算法。是自己一行一行敲出来的代码。

2014-07-23

模式识别ISODATA算法C++实现

ISODATA算法是模式识别课程中一个比较重要的动态聚类算法。本程序模拟了其分类过程。由于程序的开发平台是Visual Studio2012 ,对比较旧的版本可能无法兼容,解决办法是:把代码复制出来自己重新建立工程实现。

2013-04-20

K-Means聚类分析算法C语言实现

模式识别课程中,动态聚类算法中比较容易的K-Means聚类分析的C语言实现。

2013-04-08

二分搜索的递归和非递归实现

二分搜索的递归和非递归实现。比较简单的实现。

2013-03-07

数组循环左移

将一个n元一维向量向左旋转(即循环移位)i个位置。例如,当n=8,且i=3时,向量abcdefgh旋转为defghabc。能否使用数十个额外字节的存储空间,在正比于n的时间内完成?

2013-03-06

编程珠玑之位图排序

输入:一个最多包含n个正整数的文件,每个数都小于n,其中n=10^7,。如果在输入文件中有任何整数重复出现就是致命错误。没有其他数据与该整数关联。 输出:按升序排列的输入整数列表。 约束:最多有(大约)1MB的内存空间可用,有充足的磁盘存储空间可用。运行时间最多几分钟,运行时间为10秒就不需要进一步优化了。

2013-03-02

分治法求逆序数

求逆序数的方法很多。最容易想到的办法是分别对序列中每一个元素求其逆序数,再求所有元素的逆序数总和,易分析得出这样的方法其时间复杂度为O(n2)。而这里采用的分治法求逆序数,其时间复杂度为O(nlogn)。

2013-02-02

图的基本操作

整理了一下图的基本算法,包括图的深度优先遍历、广度优先遍历、拓扑排序、三种单源最短路径(Bell-Ford、Dijkstra、有向无回路最短路径算法)、关键路径。

2012-12-11

八数码问题A*算法C语言实现

八数码问题,实际就是在一个3X3的九宫格内,其中一个格子为空,其余八个格子分别用1-8的数字填充,这八个数字在九宫格内所占格子的位置可以任意。我们所求就是在两种占位置的情况下,如何从其中一种情况,转移到另一种情况?当然,限制条件是:移动过程中,只能是空格周围的格子向空格移动。(有点儿类似我们小时候玩的一种移动滑块拼图的游戏。)

2012-11-22

教室课程调度问题的两种解法(区间着色问题)

问题描述:假如要用很多个教室对一组课程进行调度,每节课程都有其开始时间和结束时间,我们希望使用尽量少的时间来调度所有的课程,请给出调度算法?

2012-11-17

01背包问题

01背包问题是个老生常谈的关于动态规划的问题。 首先问题描述:给定n个物品,每个物品的重量是wi,每个物品的价值是pi,背包的最大容量是M,求如何装入这些物品才能使背包里的价值量最大?

2012-11-14

最长公共子序列(LCD)

在最长公共子序列问题中,给定了两个序列 X=<X1, X2, ..., Xm>和Y=<Y1, Y2, ..., Yn>,希望找出X和Y的最大长度公共子序列。LCS是动态规划算法中比较经典的问题。

2012-11-12

排序算法的分析

C语言实现快排、归并排序、快排改进算法的递归和非递归算法 。其实以上算法的原理都很简单。在本科阶段,我们对这几个算法的基本原理都应该十分熟悉,但对于我,真正落实到是实现这几算法,之前几乎没有试过。现在刚上研一,算法课的第一次作业中,要求我们将这几个算法实现,对这几个算法,在输入规模不同的情况下,比较其实际工作效率。

2012-11-10

查找第K个元素

已知两个等长的升序整数序列{a1, a2, ..., ak}和{b1, b2, ..., bk},求序列{ai+bj}的前k小元素,其中1≤i≤k且1≤j≤k,要求时间复杂度尽可能低。 思路:将(1,1,a1+b1)加入一个小根堆 while (堆非空且出堆的元素总数少于k个) 弹出堆顶元素(x, y, v) 将(x+1,y,a{x+1}+b{y})和(x,y+1,a{x}+b{y+1})加入堆中 (堆内元素间按v比较大小)

2012-11-10

EditDistance

编辑距离,又称Levenshtein距离(也叫做Edit Distance),是指两个字串之间,由一个转成另一个所需的最少编辑操作次数。许可的编辑操作包括将一个字符替换成另一个字符,插入一个字符,删除一个字符。

2012-11-10

IP地址合法性检验

输入一个ip地址,根据其输入的格式和内容,看是否符合ipv4的地址规范,检验其合法性。

2012-11-10

空空如也

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

TA关注的人

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