编程思想
chensilly8888
求饥若渴,大智若愚。
展开
-
《编程之美》学习笔记——计算字符串的距离
一、题目摘自书中: 许多程序会大量使用字符串。对于不同的字符串,我们希望能够有办法判断其相似程度。我们定义了一套操作方法来把两个不相同的字符串变得相同,具体的操作方法为:1.修改一个字符(如把“a”替换为“b”)。2.增加一个字符(如把“abdd”变为“aebdd”)。3.删除一个字符(如把“travelling”变为“traveling”)。 比如,对于“a原创 2014-12-31 08:52:35 · 797 阅读 · 0 评论 -
OVa Online Judge 学习笔记- AOAPC I: Volume 2. Data Structure Tree
ACM做题笔记112 - Tree Summing技巧:递归+树先序遍历知识点:利用递归获得二叉树原创 2015-04-01 16:17:25 · 679 阅读 · 0 评论 -
数据结构专题——二叉查找树
一、二叉查找树(Binary Search Tree)名称二叉搜索树(Binary Search Tree) 有序二叉树(Ordered Binary Tree) 已排序二叉树(Sorted Binary Tree)二叉树性质若任意节点的左子树不空,则左子树上所有结点的值均小于它的根结点的值; 若任意节点的右子树不空,则右子树上所有结点的值均大于它的根结点的值; 任意节点的左、右子树也分别为二原创 2015-04-01 08:25:01 · 721 阅读 · 0 评论 -
OVa Online Judge 学习笔记- AOAPC I Volume 1. Elementary Problem Solving String
一、题目二、做题笔记1.10010 - Where's Waldorf?技巧:采用二维数组存储及遍历字符,使用ctype对字符进行大小写转换,注意数组边界即可解决问题。答题记录:一次通过2.10361 - Automatic Poetry技巧:putchar、gets输入输出函数使用,使用由字符串首地址加上偏移量形成的指针快速输出字符串后半部分;数组来存储匹配的字符索引原创 2015-03-24 15:25:20 · 552 阅读 · 0 评论 -
HDOJ笔记
ID 1000: 学会使用scanf,注意scanf将忽略所有空白字符(空格、回车符、制表符)。ID 1001: 防止运算过程中,数据溢出,该问题描述中注明了结果在32位有符号整数范围内,自己写算法时会发现中间过程会存在数据溢出,需根据中间范围上界(32位无符号整数可以),考虑使用强制类型转换(unsigned)。 关键知识点:考虑数据大小,防止程序计算发生溢出现象。原创 2015-03-18 11:01:13 · 541 阅读 · 0 评论 -
OVa Online Judge 学习笔记- AOAPC I Volume 1. Sorting/Searching
一、题目二、做题笔记1.10420 - List of Conquests知识点:字符串排序,及相似字符串统计。题目和10815相当类似,稍微修改下输出和读取格式即可。(C版本,使用qsort进行排序,自己实现用于比较字符串的compare函数)答题记录:AC拓展:可以写C++版本,调用中的sort函数进行排序。2.10474 - Where is the Marb原创 2015-03-25 16:01:50 · 1345 阅读 · 0 评论 -
OVa Online Judge 学习笔记- AOAPC I: Volume 2. Data Structure Lists
一、题目二、C++原因:避免自己构造相应的list,包括静态存储结构,链式存储结构。C++ STL Container:1.数组 array:Arrays are fixed-size sequence containers: they hold a specific number of elements ordered in a strict linear seque原创 2015-03-27 19:43:53 · 1279 阅读 · 0 评论 -
OVa Online Judge 学习笔记- AOAPC I Volume 1. Elementary Problem Solving Big Number
一、题目二、做题笔记1.424 - Integer Inquiry技巧:构造高精度类。类中数组长度可以根据题目条件修改以节约空间或防止溢出。题目重点是求和。答题记录:WA原因:字符串含有前导零影响运算,实现clean方法去除前导零。第二次还出现错误:发现是输出单行结果后没有加换行符(文中并未提示)而直接结束输出所导致。2.10106 - Product技原创 2015-03-25 12:11:14 · 724 阅读 · 0 评论 -
OVa Online Judge 学习笔记
一、总学习原则: 1.使用有道词典记录单词,并提高英语阅读能力,增加词汇量。 2.《算法竞赛入门经典》指导下,先按照学习内容做题,再自由选题。 3.做好做题的笔记,记录技巧,错误原因,及新知识点总结。 4.实现优先使用C语言,设计高级算法时考虑使用C++。辅助书籍:C语言相关几个书、《算法导论》二、AOAPC I 题目总览及笔记:494:知识点:原创 2015-03-23 10:46:38 · 725 阅读 · 0 评论 -
《编程珠玑(续)》学习笔记——第一章 性能监视工具(1)
一、例子:计算素数(prime number) 定义:质数,又称素数,指在大于1的自然数中,除了1和此整数自身外,无法被其他自然数整除的数(也可定义为只有1和本身两个因数的数)。(摘自维基百科:质数) 素数判定,或素性测试,是检验一个给定的整数是否为素数的测试。(摘自维基百科:素性测试)确定型算法试除法:尝试从到的整数是否整除。原创 2014-12-24 10:27:09 · 2800 阅读 · 0 评论 -
《算法导论》学习笔记——背包问题
一、背包问题(knapsack problem)(参考维基百科: http://en.wikipedia.org/wiki/Knapsack_problem)1. 0-1 背包问题(0-1 knapsack problem the most common problem):2. 有界背包问题(bounded knapsack problem BKP):3.原创 2015-03-03 16:11:07 · 1141 阅读 · 0 评论 -
《编程珠玑》学习笔记——第一章 位图数据结构
一、题目:输入:一个最多包含n个正整数的文件,每个数都小于n,其中n = 10^7。如果在输入文件中有任何整数重复出现就是致命错误。没有其他数据与该整数相关联。输出:按升序排列的输入整数的列表。约束:最多有(大约)1MB的内存空间可用,有充足的磁盘存储空间可用。运行时间最多几分钟,运行时间为10秒就不需要进一步优化了。题目分析: 这里明确了输入,输出和约束条件三个原创 2014-12-29 20:21:48 · 806 阅读 · 1 评论 -
《算法导论》学习笔记——钢条切割,斐波那契数列(动态规划)
一、动态规划动态规划思想:通过子问题求解原问题,应用于子问题重叠的情况。动态规划特点:1.最优子结构2.重叠子问题动态规划步骤:1.刻画一个最优解的结构特征。2.递归地定义最优解的值。3.计算最优解的值,通常采用自底向上的方法。4.利用计算出的信息构造一个最优解。动态规划实现方法:1.带备忘的自顶向下法2,自底向上法分治法与动态规划法比较原创 2015-01-04 19:10:50 · 1663 阅读 · 0 评论 -
《算法导论》学习笔记——最大子数组(分治策略,动态规划)
一、分治策略分治法的思想 将原问题分解为几个规模较小但类似于原问题的子问题,递归地求解这些子问题,然后再合并这些子问题的解来建立原问题的解。递归式 递归式与分治方法是紧密相关的,因为使用递归式可以很自然地刻画分治算法的运行时间。在分治策略中,我们递归地求解一个问题,在每层递归中应用如下的三个步骤: 分解:将问题划分为一些子问题,子问题的形式与原问题一样,只原创 2015-01-04 10:42:51 · 2580 阅读 · 0 评论 -
《编程之美》学习笔记——2.13子数组的最大乘积
一、问题 给定一个长度为N的整数数组,只允许使用乘法,不能用除法,计算任意(N-1)个数的组合乘积中最大的一组,并写出算法的时间复杂度。分析:输入:长度为N的整数数组array。输出:这里输出两个值,(N-1)个数的组合最大乘积multiple,以及剔除的数在数组中的索引index_delete。约束:不能用除法计算。二、解法 解法一 暴力求解法原创 2015-02-18 00:02:52 · 586 阅读 · 0 评论 -
《编程之美》学习笔记——2.11寻找最近点对
一、问题给定平面上N个点的坐标,找出距离最近的两个点。分析:输入:N个点,即N组坐标(N >= 2),每个坐标可以用数据结构Point结构体来表示,存储x和y坐标。输出:两个点,即2组坐标。约束:输出的两个点在输入所有的点中距离最近。附加:可以把最小距离值也作为一个输出。思考:可以先考虑一维情况下问题的解,在拓展处理二维情况(平面)。二、一维解法我们原创 2015-02-15 18:53:13 · 770 阅读 · 0 评论 -
数据结构专题——堆
一、堆(heap)别称:优先队列(priority queue)思想:(参考维基百科:http://zh.wikipedia.org/zh-cn/堆 )在队列中,调度程序反复提取队列中第一个作业并运行,因为实际情况中某些时间较短的任务将等待很长时间才能结束,或者某些不短小,但具有重要性的作业,同样应当具有优先权。堆即为解决此类问题设计的一种数据结构。定义:(参考维基原创 2015-02-05 16:06:56 · 668 阅读 · 0 评论 -
数据结构——图
图(Graph) (参考资料:《大话数据结构》《算法导论》) 图是由顶点的有穷非空集合和顶点之间的边的集合组成,通常表示为:G(V,E),其中G表示一个图,V是图G中顶点(Vertex)的集合,E是图中边的集合。 图的相关术语 1.无向图与有向图 无向图:图中任意两个顶点u和v之间的边没有方向(无原创 2015-04-13 19:25:51 · 791 阅读 · 0 评论