摘要: 问题一:字符串s1与字符串s2之间的编辑距离为:将s1转换成s2的最少步数,转换过程可以进行的操作有: 1.插入一个字符 2.删除一个字符 3.替换一个字符 我们用f[i][j]表示s1[0,i]前i个字符组成的字符串,和s2[0,j]前j个字符组成的字符串,之间的编辑距离。若s[i-1]==s[j 阅读全文
posted @ 2016-09-16 23:25 beaglebone 阅读(583) 评论(0) 推荐(0) 编辑
摘要: 问题一:子数组和的最大值: 用f[i]表示以a[i]结尾的最大连续子序列和。i在0~n-1之间,最后比较所有的f[i]找到最大值。对于这样的一维动态规划,可以简化为用一个变量f滚动完成更新。 问题二:不相交子数组和之差的最大值。 我们需要将数组分成不相交的两部分,分别求所有可能的两部分的子数组的和的 阅读全文
posted @ 2016-09-16 21:49 beaglebone 阅读(468) 评论(0) 推荐(0) 编辑
摘要: 问题一:将字符串“abcde”翻转成“edcba”;用start表示字符串的首地址,end表示字符串的最后一个字符的指针。 问题二:将字符串“I am a student.”翻转,但是每个单词内的字符顺序不变,变成“student. a am I”。 问题三:将字符串"abcdefg"左旋2位成字符 阅读全文
posted @ 2016-09-16 20:14 beaglebone 阅读(153) 评论(0) 推荐(0) 编辑
摘要: 动态规划:用f[i][j]表示s[i~j]字符串是否是回文字符串。 阅读全文
posted @ 2016-09-16 18:00 beaglebone 阅读(251) 评论(0) 推荐(0) 编辑
摘要: 堆是完全二叉树的结构,因此对于一个有n个节点的堆,高度为O(logn)。 最大堆:堆中的最大元素存放在根节点的位置。 除了根节点,其他每个节点的值最多与其父节点的值一样大。也就是任意一个子树中包含的所有节点的值都不大于树根节点的值。 堆中节点的位置编号都是确定的,根节点编号为1,每一层从左到右依次编 阅读全文
posted @ 2016-09-16 17:08 beaglebone 阅读(12064) 评论(0) 推荐(0) 编辑
摘要: 问题:求出序列的最长递增子序列,比如序列a[9]={2,1,5,3,6,4,8,9,7},求此序列的最长递增子序列为{1,3,4,8,9}; 方法一: 用LCS的方法,计算序列a与排序后的序列b之间的最长公共子序列。在这里用了快速排序,然后再用LCS方法。 LCS最长公共子序列:用f[i][j]表示 阅读全文
posted @ 2016-09-16 15:59 beaglebone 阅读(319) 评论(0) 推荐(0) 编辑