
算法相关
文章平均质量分 73
wpj112
专业:自然语言处理
能力特长:c语言开发,操作系统,嵌入式开发,信息安全,信息检索。
现在:读自然语言处理方向研究生
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
后缀表达式
后缀表达式 不包含括号,运算符放在两个运算对象的后面,所有的计算按运算符出现的顺序,严格从左向右进行(不再考虑运算符的优先规则,如:2 1 + 3 *,即(2 + 1) * 3[编辑本段]表达式的计算 将中缀表达式转换为后缀表达式的算法思想: ·开始扫描; ·数字时,加入后缀表达式; ·运算符: a. 若为最高级的运算符,入栈;转载 2012-07-03 13:22:32 · 337 阅读 · 0 评论 -
递归和迭代
作者:拒绝潜水的鱼出处:http://slave2.cnblogs.com/ 归与迭代都是基于控制结构:迭代用重复结构,而递归用选择结构。递归与迭代都涉及重复:迭代显式使用重复结构,而递归通过重复函数调用实现重复。递归与迭代都涉及终止测试:迭代在循环条件失败时终止,递归在遇到基本情况时终止。使用计数器控制重复的迭代和递归都逐渐到达终止点:迭代一直修改计数器,直到计数器值使循环条件失败;转载 2012-07-03 13:23:12 · 374 阅读 · 0 评论 -
动态规划4道题 (python和c++代码)
#encoding:utf-8#求fibo数列的非递归版本:动态规划,可用来练练手p=[]def fibo(n): i=0 p.append(1) p.append(1) for i in range(2,n+1): if i!=n: p.append(p[i-1]+p[i-2])原创 2012-07-14 11:38:26 · 579 阅读 · 0 评论 -
整数的划分问题 (python)
整数的划分问题是一个很经典的问题,它的变形也非常的多,总结了一下,大概有以下几种变形:1) 将 N 划分为若干个正整数的和的划分数2) 将 N 划分为若干个不同的正整数的和的划分数3) 将 N 划分为不超过K 个正整数的和的划分数4) 将 N 划分为不超过K 个不同正整数的和的划分数5) 将 N 划分为最大数不超过K转载 2012-07-15 14:07:07 · 341 阅读 · 0 评论 -
贪心算法 总结
贪心算法顾名思义,贪心算法总是作出在当前看来最好的选择。也就是说贪心算法并不从整体最优考虑,它所作出的选择只是在某种意义上的局部最优选择。当然,希望贪心算法得到的最终结果也是整体最优的。虽然贪心算法不能对所有问题都得到整体最优解,但对许多问题它能产生整体最优解。如单源最短路经问题,最小生成树问题等。在一些情况下,即使贪心算法不能得到整体最优解,其最终结果却是最优解的很好近似。个人觉原创 2012-07-20 13:57:51 · 642 阅读 · 0 评论 -
约瑟夫问题
约瑟夫问题a)特殊情况:逢2杀1情况二进制代码左循环1位讨论N个人逢k杀1的通项公式J(1)=1J(n)=(J(n-1)+k)mod(n)逢2杀1,k=2,则有J(1)=1J(n)=(J(n-1)+2)mod(n)至于递推公式从何而来,可参看附录文章。除了数组,链表等常规方法外,在逢2杀1情况下,有一种优雅的简洁方法,即n的二进制代码左循环1位即为结果,这在kn原创 2012-07-25 20:31:46 · 268 阅读 · 0 评论 -
《算法导论》读书笔记6(中位数和顺序统计学)
这一章《中位数和顺序统计学》很短,也是本书第二部分的最后一章 写几段代码吧。 求数组最小值 Java代码 int minimum(int[] a) { int min = a[0]; for (int i = 1; i if (min > a[i]) {转载 2012-08-16 11:33:52 · 230 阅读 · 0 评论 -
排序算法 稳定性
之前的一次笔试只,出了一道选择题,问排序算法的稳定性,虽然了解很多排序算法,但稳定性还真没有关注过。所以说,先找一篇文章慢慢来分析。结论: 选择排序、快速排序、希尔排序、堆排序不是稳定的排序算法,而冒泡排序、插入排序、归并排序和基数排序是稳定的排序算法排序算法的稳定性:若待排序的序列中,存在多个具有相同关键字的记录,经过排序, 这些记录的相对次序保持不变,则称该算法是稳定的;若转载 2012-08-23 10:26:57 · 277 阅读 · 0 评论 -
C++命名规范
在软件开发这一高度抽象而且十分复杂的活动中,命名规则的重要性更显得尤为突出。一套定义良好并且完整的、在整个项目中统一使用的命名规范将大大提升源代码的可读性和软件的可维护性。在引入细节之前,先说明一下命名规范的整体原则:同一性在编写一个子模块或派生类的时候,要遵循其基类或整体模块的命名风格,保持命名风格在整个模块中的同一性。标识转载 2012-08-23 10:23:18 · 225 阅读 · 0 评论 -
《数学之美》读书笔记和知识点总结(一)
早在前几个月我在台湾的时候,就听说《数学之美》是一本非常不错的书,也正好是我喜欢的类型,一直想买。回到北京之后的第一件事就是把我这半年积攒的书单全部兑现,其中包括《数学之美》和《浪潮之巅》。看了之后大叫过瘾,让我好好享受了一回数学之美。 文字和数字的起源很久以前人类以不同的叫声表示不同的信息,达到彼此交流的目的,当所要表达的信息太多时,叫声已经不够用了,于是文字产生了。转载 2012-09-19 15:46:49 · 430 阅读 · 0 评论 -
用Unix的设计思想来应对多变的需求
之前,@风枫峰 在“这是谁的错?”中说过开发团队对需求来者不拒,而@weidagang 也在“需求变更和IoC”中说过用IoC来最大程度地解决需求变更。今天我也想从Unix设计思想的角度来说说什么是好的软件设计,什么样的设计可以把需求变更对开发的影响降低。(注意:这并不能解决用户或是PM的无理需求,面对无理需求,需要仔细分析需求,而用技术的手段无法搞定这个事,但是可以减轻需求变更带来的痛苦)转载 2012-07-12 13:21:25 · 205 阅读 · 0 评论 -
rsync 的核心算法
rsync是unix/linux下同步文件的一个高效算法,它能同步更新两处计算机的文件与目录,并适当利用查找文件中的不同块以减少数据传输。rsync中一项与其他大部分类似程序或协定中所未见的重要特性是镜像是只对有变更的部分进行传送。rsync可拷贝/显示目录属性,以及拷贝文件,并可选择性的压缩以及递归拷贝。rsync利用由Andrew Tridgell发明的算法。这里不介绍其使用方法,只介绍其转载 2012-07-12 13:14:26 · 215 阅读 · 0 评论 -
ACM起步
来源:学长资料标 题: acm起步(一)建议多做点 Online Judge 的题目 (在线提交题目,立即知道对错),对于初学者,建议去看看http://ace.delos.com/usacogate Jeru 同学做了一个很不错的辅导网页 http://202.120.61.1/oibh/usacogate/(补注:此页面已失效)http://acm.timus.ru和转载 2012-07-12 13:07:42 · 618 阅读 · 0 评论 -
深入理解FIFO(包含有FIFO深度的解释)
FIFO: 一、先入先出队列(First Input First Output,FIFO)这是一种传统的按序执行方法,先进入的指令先完成并引退,跟着才执行第二条指令。 1.什么是FIFO? FIFO是英文First In First Out 的缩写,是一种先进先出的数据缓存器,他与普通存储器的区别是没有外部读写地址线,这样使用起来非常简单,但缺点就是只能顺序写入数据,顺序的读出数转载 2012-07-05 12:43:21 · 1030 阅读 · 0 评论 -
浅析数学能力对于编程工作者有很大影响
可能有很多朋友在网上看过google公司早几年的招聘广告,它的第一题如下了:{first 10-digit prime found in consecutive digits e}.com,e中出现的连续的第一个10个数字组成的质数。据说当时这个试题在美国很多地铁的出站口都有大幅广告,只要正确解答了这道题,在浏览器的地址栏中输入这个答案,就可以进入下一轮的测试,整个测试过程如同一个数学迷宫,直转载 2012-06-26 12:50:39 · 631 阅读 · 0 评论 -
大端模式与小端模式、网络字节顺序与主机字节顺序
大端模式与小端模式一、概念及详解 在各种体系的计算机中通常采用的字节存储机制主要有两种: big-endian和little-endian,即大端模式和小端模式。 先回顾两个关键词,MSB和LSB: MSB:Most Significant Bit ------- 最高有效位 LSB:Least Significant Bit ------- 最低有效位转载 2012-06-26 12:35:15 · 796 阅读 · 0 评论 -
软件编程与数学思维
软件编程与数学思维□ 张水坤 《大众科学·科学研究与实践》 2007年第08期 [摘要]近年来,学科的高速发展已经明确地反映出这样一个特点:学科基础研究和技术开发越来越多地同数学建立更为紧密的联系,对各种数学工具的使用不仅越来越广泛,而且越来越深入。要掌握好软件编程,数学思维是非常重要的。先讨论软件编程与数学的联系,再以一些具体的代码作为例子,结合实际经验谈点看法。 [关键词]软件转载 2012-06-26 12:49:53 · 586 阅读 · 0 评论 -
位运算应用口诀和实例(转高傲笨狼)
聪慧不在年事上,聪明藏在思维里位运算应用口诀和实例 位运算应用口诀 清零取反要用与,某地位一可用或若要取反和互换,轻轻松松用异或移位运算要点 1 它们都是双目运算符,两个运算分量都是整形,成果也是整形。 2 "左移:右边空出的位上补0,左边的位将从字头挤掉,其值相当于乘2。 3 ">>"右移:右边的位被挤掉。对于左边移出的空位,若是是正数则空位补0,若为负数,转载 2012-06-26 19:00:26 · 523 阅读 · 0 评论 -
搜索算法总结
搜索算法,是一种在状态空间中寻找特定的目标状态及到达目标状态的途径的系统方法。常见的题目如:搜索是计算机求解问题的最基本方法,适用面很广,没有向动态规划那样对状态有最优化原理和无后效性的约束。而针对具体问题,特别是运用了某种智能化的优化手段,也许会带来某些具体的约束。相关题目:POJ 3278POJ 11641088 记忆搜索POJ 23861101 The Game1原创 2012-07-09 17:02:43 · 243 阅读 · 0 评论 -
不用乘除,循环,判断求前n项和 (三种方法)
题目:求 1+2+ … +n,要求不能使用乘除法、 for 、 while 、 if、 else 、 switch、 case 等关键字以及条件判断语句( A?B:C )。方法1:针对循环可以用递归来替代,而针对递归的结束可以用n&&(fun())来代替,因为一旦n等于0则不会执行后面的代码了。整个代码:int addtion(int n){原创 2012-06-27 20:25:04 · 692 阅读 · 0 评论 -
排序算法的稳定性
首先,排序算法的稳定性,通俗地讲就是能保证排序前2个相等的数其在序列的前后位置顺序和排序后它们两个的前后位置顺序相同。在简单形式化一下,如果Ai = Aj, Ai原来在位置前,排序后Ai还是要在Aj位置前。 其次,说一下稳定性的好处。排序算法如果是稳定的,那么从一个键上排序,然后再从另一个键上排序,第一个键排序的结果可以为第二个键排序所用。基数排序就是这样,先按低位排序,逐次按高转载 2012-06-29 12:54:00 · 319 阅读 · 0 评论 -
第一个 NP-complete 问题
NP 是 Non-deterministic Polynomial 的缩写,NP 问题通俗来说是其解的正确性能够被很容易检查的问题, 这里"很容易检查"指的是存在一个多项式检查算法. 例如, 著名的推销员旅行问题(Travel Saleman Problem or TSP):假设一个推销员需要从香港出发, 经过广州, 北京, 上海,....., 等 n 个城市, 最后返回香港。 任意两个城转载 2012-06-29 12:55:52 · 489 阅读 · 0 评论 -
算法书目
来源:学长资料【1. CLRS 算法导论】算法百科全书,只做了前面十几章的习题,便感觉受益无穷。【2. Algorithms 算法概论】短小精悍,别据一格,准经典之作。一个坏消息: 同算法导论,该书没有习题答案。好消息:习题很经典,难度也适中,只需花点点时间自己也都能做出来。不好也不坏的消息:我正在写习题的答案,已完成前三章,还剩九章约二百道题,顺利的话二个月之后发转载 2012-07-12 13:01:42 · 496 阅读 · 1 评论 -
《数学之美》读书笔记和知识点总结(二)
接上一篇文章,我继续对《数学之美》进行总结。由于篇幅原因,很多具体的算法没有写,只给出了外链。如有需要请自行搜索 网页相似性的度量问题描述:求出任意两个网页之间的相似程度解决方法:TF-IDF方法(term Frequency-Inverse Document Frequency)步骤:提取出网页的关键词,然后根据网页的长度对关键词进行归一化。两个网转载 2012-09-19 15:47:34 · 651 阅读 · 0 评论