算法程序设计
本人对数据结构、算法比较感兴趣。从《挑战程序设计(竞赛)》一书中收获颇多!本专栏就是记录我在学习该书时的笔记和所得到的感悟,希望对大家有所帮助,我结合自己的实践分别用C++和Java两种语言进行了实现,两种语言各有各的优点,读者自己去本会吧!
陌尘(MoChen)
程序员码龄: 14+年
IT从业经验: 10+年
曾任职单位: 北大方正,阿里巴巴
出版的书籍: 《人人都懂设计模式》、《Python 設計模式》
擅长的语言: C++/Python/JavaScript
涉及的技术: 电子书SDK,PC户端开发,Linux应用开发,前端开发
涉及的行业: 电子出版,在线教育,文档协调,智能机器人
展开
-
动态规划的用法——01背包问题
动态规划的用法——01背包问题 问题主题:著名的01背包问题问题描述:有n个重量和价值分别为wi、vi的物品,现在要从这些物品中选出总重量不超过W的物品,求所有挑选方案中的价值最大值。限制条件:1N1001wi 、vi1001wi10000样例:输入N=4原创 2014-01-19 19:10:46 · 17404 阅读 · 4 评论 -
贪心算法——字典序最小问题
贪心算法——字典序最小问题 问题主题:字典序最小问题描述:给定长度为N的字符串S,要构造一个长度为N字符串T。T是一个空串,反复执行下列任意操作:l 从S的头部删除一个字符,加到T的尾部;l 从S的尾部删除一个字符,加到T的尾部;目标是要构造字典序尽可能小的字符串T。限制条件:1N00字原创 2014-01-19 15:22:33 · 12409 阅读 · 2 评论 -
贪心算法——区间调度问题
贪心算法——区间调度问题 问题主题:区间调度问题问题描述:有n项工作,每项工作分别在si开始,ti结束。对每项工作,你都可以选择参加或不参加,但选择了参加某项工作就必须至始至终参加全程参与,即参与工作的时间段不能有重叠(即使开始的时间和结束的时间重叠都不行)。限制条件:11000001ii,=109原创 2014-01-12 23:20:25 · 21132 阅读 · 2 评论 -
贪心算法——找纸币问题
贪心算法——找纸币问题 问题主题:找钱问题描述:假设有1元、2元、5元、10元、20元、50元、100的纸币分别为c0, c1, c2, c3, c4, c5, c6,张。现在要用这些钱来支付K元,至少要用多少张纸币?如果能找,则输出纸币的张数,不能找则输出No限制条件:0c0, c1,c2,c3,c4,c5,c610原创 2014-01-12 21:13:59 · 8281 阅读 · 0 评论 -
深度优先搜索的用法——lake counting
深度优先搜索的用法——lake counting问题主题:Lake Counting问题描述:有一个大小为N*M的园子,雨后积了很多水。八连通的积水被认为是在一起的。请求出园子里共有多少个水洼?(八连通是指下图中相对+的*部分)++++*++++限制条件:N,M 样例:输原创 2014-01-05 17:11:57 · 7465 阅读 · 10 评论 -
深度优先搜索的用法——求数组部分和
深度优先搜索的用法——求数组部分和 问题主题:求数组部分和问题描述:给定整数a1,a2, … an,判断能否从中选出若干个数,使得它们的和为k。限制条件:1-108i8-1088样例:输入n=4a={1,2,4,7}k=13输出Yes (13=2+4+7)输入n=4a={1,2,原创 2014-01-05 11:57:17 · 4303 阅读 · 1 评论 -
c++实现二分查找
简要描述:二分查找又称折半查找,优点是比较次数少,查找速度快,平均性能好;其缺点是要求待查表为有序表,且插入删除困难。条件:查找的数组必须要为有序数组。二分查找的过程剩简要描述如下图:二种实现方式1.递归/*arrat:数组 , low:上界; high:下界; target:查找的数据; 返回target所在数组的下标 */int原创 2013-11-17 22:25:57 · 29604 阅读 · 3 评论 -
C++如何跳出多层循环
C++如何跳出多层循环虽然说语言是互通的,各种计算机语言的基本逻辑结构是类似的,但不同的语言之间还是有一些差别的。如循环中的break,在java中可以后面带标志:break [flag](flag为要结束的循环层数),但在C++中没有这个标志。那C++中如何跳出多重循环呢?以问题为例:问题主题:抽签问题描述:将写有数原创 2013-11-17 12:41:37 · 56526 阅读 · 2 评论 -
蚂蚁爬行问题
问题主题:Ants(POJ No.1852)问题描述:n只蚂蚁以每秒1cm的速度在长为Lcm的竹竿上爬行。当蚂蚁看到竿子的端点时就会落下来。由于竿子太细,两只蚂蚁相遇时,它们不能交错通过,只能各自反方向爬行。对于每只蚂蚁,我们只知道它离竿子最左端的距离为xi,但不知道它当前的朝向。请计算所有蚂蚁落下竿子的最短时间和最长时间。 限制条件:16原创 2013-09-26 23:31:05 · 13894 阅读 · 2 评论 -
几个比较大的在线提交系统(Online Judge)
原文:http://www.cnblogs.com/yqskj/articles/2005038.html下面是几个比较大的在线提交系统(Online Judge)浙江大学 Online Judge(ZOJ)http://acm.zju.edu.cn国内最早也是最有名气的OJ,有很多高手在上面做题。特点是数据比较刁钻,经常会有你想不到的边界数据,很能考验思维的全面性。转载 2013-09-26 19:45:55 · 8792 阅读 · 0 评论 -
从简单的三角形开始
问题主题:三角形问题描述: 有n根棍子,棍子i的长度为ai,想要从中选出三根棍子组成周长尽可能长的三角形。请输出最大的周长,若无法组成三角形则输出0。样例:输入n=5a={2,3,4,5,10}输出12(选择3,4,5时) 输入n=4a={4,5,10,20}原创 2013-09-21 17:35:19 · 4213 阅读 · 1 评论