摘要:
给定两个字符串s1和s2,计算出将s1转换成s2所用的最少操作数。可以对一个字符串进行如下三种操作:1.插入一个字符;2.删除一个字符;3.替换一个字符。 递归法的解题方式: 两个字符串从后(i=s1.length()-1,j=s2.length()-1)往前比较,递归三要素之一——终止条件base 阅读全文
摘要:
回溯算法实际上一个类似枚举的搜索尝试过程,主要是在搜索尝试过程中寻找问题的解,当发现已不满足求解条件时,就“回溯”到前一个结点,尝试别的路径。 回溯法主要包括两种形式:子集树和排列树。 子集树概念:当所给问题是从n个元素的集合S中找出S满足的某种性质的子集时,相应的解空间树称为子集树。例如,0-1背 阅读全文
摘要:
一个函数调用其它函数好理解,但一个函数调用自身函数(这就是递归),代码看起来就不好懂了,容易把人绕进去出不来。不就是一个函数吗,为什么会让人看不懂呢?因为理解递归应该从整体(即整个函数体是否能解决问题)来看,而不是纠结于递归函数执行到了哪里!这是我研究了一遍又一遍最简单的递归代码得出得结论。我曾把二 阅读全文
摘要:
动态规划问题的一般形式就是求最值。最显著的特点是最优子结构和重叠子问题。最优子结构就是子问题的最优解,可以从子问题的最优结果推出更大规模问题的最优结果,可以用状态转移方程描述问题。重叠子问题可以通过创建备忘录dp[]避免重复计算。 零钱兑换的解题步骤: 1)先确定状态,也就是原问题和子问题中变化的变 阅读全文
摘要:
快速排序由C. A. R. Hoare在1960年提出。它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。 第一种典型实现:通过两个游 阅读全文