摘要: #include#includeusing namespace std;int m;int max(int,int);void dqta(int **data,int **d);//寻找最优值void fpath(int **data,int **d,int *path);//寻找最优路径int m... 阅读全文
posted @ 2014-07-15 17:38 StevenSuo 阅读(485) 评论(0) 推荐(0) 编辑
摘要: /*=========程序信息========对应题目:01背包之金矿模型使用语言:c++使用编译器:Visual Studio 2005.NET使用算法:动态规划算法运行时间:O(people * n) [people是人数,n是金矿数]作者:贵州大学05级 刘永辉 昵称:SDJL编写时间:200... 阅读全文
posted @ 2014-07-15 17:37 StevenSuo 阅读(146) 评论(0) 推荐(0) 编辑
摘要: 题:给定两个字符串X,Y,求二者最长的公共子串,例如X=[aaaba],Y=[abaa]。二者的最长公共子串为[aba],长度为3。1 基本算法其实对于最长公共子串,还是比较简单易想的,因为子串是连续的,这就方便了很多。最直接的方法就是用X每个子串与Y的每个子串做对比,求出最长的公共子串。2 DP方... 阅读全文
posted @ 2014-07-10 17:36 StevenSuo 阅读(180) 评论(0) 推荐(0) 编辑
摘要: 一个字符串S,去掉零个或者多个元素所剩下的子串称为S的子序列。最长公共子序列就是寻找两个给定序列的子序列,该子序列在两个序列中以相同的顺序出现,但是不必要是连续的。例如序列X=ABCBDAB,Y=BDCABA。序列BCA是X和Y的一个公共子序列,但是不是X和Y的最长公共子序列,子序列BCBA是X和Y... 阅读全文
posted @ 2014-07-10 17:34 StevenSuo 阅读(189) 评论(0) 推荐(0) 编辑
摘要: 知识点:1. sort 使用时得注明:using namespace std; 或直接打 std::sort() 还得加上 #include 2. qort是qsort的升级版,如果能用sort尽量用sort,使用也比较简单,不像qsort还得自己去写 cmp 函数,只要注明 使用的库函数就可以使... 阅读全文
posted @ 2014-07-10 17:28 StevenSuo 阅读(427) 评论(0) 推荐(0) 编辑
摘要: 题:求一个一维数组arr[i]中的最长递增子序列的长度,如在序列1,-1,2,-3,4,-5,6,-7中,最长递增子序列长度为4,可以是1,2,4,6,也可以是-1,2,4,6。从后向前分析,很容易想到,第i个元素之前的最长递增子序列的长度要么是1(单独成一个序列),要么就是第i-1个元素之前的最长... 阅读全文
posted @ 2014-07-10 17:23 StevenSuo 阅读(164) 评论(0) 推荐(0) 编辑
摘要: 预备知识: 1. sort 使用时得注明:using namespace std; 或直接打 std::sort() 还得加上 #include 2. qort是qsort的升级版,如果能用sort尽量用sort,使用也比较简单,不像qsort还得自己去写 cmp 函数, 只要注明 ... 阅读全文
posted @ 2014-07-10 17:08 StevenSuo 阅读(633) 评论(0) 推荐(0) 编辑
摘要: 题:求一个一维数组arr[i]中的最长递增子序列的长度,如在序列1,-1,2,-3,4,-5,6,-7中,最长递增子序列长度为4,可以是1,2,4,6,也可以是-1,2,4,6。 从后向前分析,很容易想到,第i个元素之前的最长递增子序列的长度要么是1(单独成一个序列), 要么就是第i-1个元素之前的... 阅读全文
posted @ 2014-07-10 17:06 StevenSuo 阅读(138) 评论(0) 推荐(0) 编辑
摘要: 对于最长不重复子串,某个当前的字符,如果它与前面的最长不重复子串中的字符没有重复, 那么就可以以它为结尾构成新的最长子串;如果有重复,且重复位置在上一个最长子串起始位置之后, 那么就与该起始位置之后的稍短的子串构成新的子串或者单独成一个新子串。 举个例子:例如字符串“abcdeab”,第二个字符a... 阅读全文
posted @ 2014-07-10 17:03 StevenSuo 阅读(176) 评论(0) 推荐(0) 编辑
摘要: 求一个数组的相加和最大的连续子数组 思路: 一直累加,只要大于0,就说明当前的“和”可以继续增大, 如果小于0了,说明“之前的最大和”已经不可能继续增大了,就从新开始, result=max{result+arr[i],arr[i]};显然,若result>0,则可以继续相加,否则,就重新开始。#i... 阅读全文
posted @ 2014-07-10 17:02 StevenSuo 阅读(146) 评论(0) 推荐(0) 编辑