随笔分类 -  Algorithms

Any important or interesting algorithm
子集和问题 —— 一种组合生成算法
摘要:作者: JohnWaken邮箱: JohnWaken@163.com转载请著明: http://www.cnblogs.com/john-d/admin/EditPosts.aspx?postid=1638411今天在网上看见这么一道题目:给你m个数,从里面找出和为sum的n个数,问一共能找到多少组这样的数。根据我的理解,这是一道组合生成的题目。令m个数组成的集合为M,就是要找到所有元素个数为n且... 阅读全文

posted @ 2010-01-03 21:02 John Waken 阅读(7421) 评论(3) 推荐(2)

基于深度优先的回溯算法框架
摘要:作者: John Waken邮箱: JohnWaken@163.com转载请著明: http://www.cnblogs.com/john-d/admin/EditPosts.aspx?postid=1638258很多复杂点儿的问题都要用树或图来建模,树和图最基础的操作是遍历,但是有时候我们并不需要访问每个结点。比如问你,中国地图上有镇江这个城市吗?那你肯定是找到就立马告诉我,而不会傻拉吧唧地把每... 阅读全文

posted @ 2010-01-03 15:53 John Waken 阅读(2696) 评论(0) 推荐(0)

出栈序列研究
摘要:作者: John Waken邮箱: JohnWaken@163.com转载请著明: http://www.cnblogs.com/john-d/archive/2009/12/29/1635161.html在学习数据结构的时候,老师出了这么个题目:1,2,3,4,5,6,7这七个数按顺序入栈,出栈序列有几种?当时我是先画了几个,比如1,2,3,4,5,6,7肯定可以,还有7,6,5,4,3,2,1... 阅读全文

posted @ 2009-12-29 16:32 John Waken 阅读(5793) 评论(6) 推荐(2)

与二进制相关的算法
摘要:描述: 判断一个正整数n是否是2的幂算法: int isExp2(int n) { if (n<=0) return 0; return n&(n-1)?0:1; }分析: 这个算法时间复杂度是O(1),没想到吧!我想到的算法是,将n一直除2直到n变为0,如果途中出现余数不为0则说明n不是2的幂。 这样算法时间复杂度是O(log2(n))。可谁知利用二进制二进制位运算后,立马变为O(... 阅读全文

posted @ 2009-11-21 15:26 John Waken 阅读(814) 评论(3) 推荐(0)

变长参数的实现
摘要:我们用的最多的C函数是哪个?毫无疑问,是printf。但是你看过printf的声明式吗,那是相当诡异。随便拿一本带C库函数参考的书,可查到如下结果: int printf(const char *format, ...);那三个连续的点就代表大于或等于0个参数,再加上前面的format参数,所以printf函数至少要接受一个字符串,后面就随便了。但是这是如何实现的呢,不急,首先必须要了解C语言函数... 阅读全文

posted @ 2009-11-08 13:51 John Waken 阅读(1406) 评论(0) 推荐(0)

an interesting little algorithm
摘要:Problem Description: Given an array with N capacity, which store N integers from 1 to N-1 with one and only one integer occurs twice, please find that repeated integer. Note, limit the time complexit... 阅读全文

posted @ 2009-11-03 22:12 John Waken 阅读(229) 评论(0) 推荐(0)

导航