摘要: #include <iostream.h>#include <stdlib.h>#include <stdio.h>using namespace std;//冒泡排序 O(n^2)---稳定冒泡排序将被排序的记录数组R[1..n]垂直排列,每个记录R[i]看作是重量为ki的气泡。根据轻气泡不能在重气泡之下的原则,从下往上扫描数组R;凡扫描到违反本原则的轻气泡,就使其向上"漂浮"。如此反复进行,直到最后任何两个气泡都是轻者在上,重者在下为止。void BubbleSort(int *arr, int len){ bool changed 阅读全文
posted @ 2012-07-14 21:37 Geek_Ma 阅读(203) 评论(0) 推荐(1) 编辑
摘要: 一、 最长公共子序列1. 问题通过比较公共子序列的长度来判断两个序列是否相似,如ABCBCDA和ACBCCAD的最长公共子序列为ABCCD。现在有两个序列和,找出X和Y的最长公共子序列(LCS)。2. 子问题拆分这个问题就是求所有公共序列,然后找出最长的那个,而如何计算序列的长度,就是一个递归的过程了,公式如下: 这个问题是几个动态规划问题中最好理解的一个,是一个二维遍历标记的过程,最后再遍历一遍标记就能获得结果,不再赘述,直接看伪代码。3. 伪代码LCS-LENGTH(X, Y) m <- length[X] n <- length[Y] for i <- 1 to m . 阅读全文
posted @ 2012-07-14 19:49 Geek_Ma 阅读(296) 评论(0) 推荐(0) 编辑