- 博客(13)
- 资源 (28)
- 收藏
- 关注
原创 用备忘录方式解LCS问题
用前面说过的备忘录的方法来解LCS问题,由顶至底的思考方式,直接利用递归式修改。#include #include using namespace std;#define INF 9999999int c[100][100];int LCS_Memo(string X,string Y,int i,int j){ if(c[i][j]<INF) ret
2012-01-31 21:48:48 3340 1
原创 动态规划——LCS问题
LCS问题即 longest common subsequence 最长公共子序列问题,也是经典的DP问题。做这道题目的时候依旧是和做其他DP题目一样,按照步骤,先找到最优子结构,然后确定递归方程,然后就是填表和计算了。given a sequence X = 〈x1,x2, ..., xm〉, we define the ith prefix ofX, for i
2012-01-31 20:49:33 2102
原创 备忘录技术
还是说矩阵连乘问题,在用动态规划来做的时候,是一种自底向上的路线,要接触m[1,n]就要先从一个矩阵的时候,2个连乘的时候,3个连乘的时候,开始一步步求,填好表,然后才可以求出n个矩阵连乘。其实在想这道题目的时候,一般人们也会想用暴力的方法解决,就是用递归来做,算法就像下面这个样子RECURSIVE-MATRIX-CHAIN(p, i, j)1 if i = j2 then r
2012-01-31 17:15:23 1128
原创 OJ做题常见的几个错误
Accepted——本组测试通过Wrong Answer——回答错误,请细心检查你的算法或者看看是不是多输出了不必要的内容Presentation Error——表达错误,但结果正确。原因是多或少输出了空格或者换行等不可见字符Time Limit Exceed——超时。运行时间超过了本题允许的范围,但不知道是否结果正确Runtime Error——运行时错误。发生了非法内存访问或者
2012-01-31 02:10:57 1675
原创 动态规划——POJ1651(矩阵连乘)
问题描述输入一串数字,然后除了第一个和最后一个之外,其他的数字,每次可以移走一个,然后和它的左右两个数字做相乘,最后只剩下2个数字,就是第一个和最后一个。然后要求出刚刚算出的那些积的和的最小值。其实这道题目和矩阵连乘是一样的,把它的n个输入转化为是n-1个矩阵的行数和列数,那就和矩阵连乘问题一样了。#include using namespace std;int m[101][1
2012-01-30 21:45:24 1564
原创 动态规划——矩阵连乘问题
矩阵连乘问题,一个很经典的DP问题。用DP解这道题的时候,需要找到递归方程,也就是下面这条其中m[i][j]代表的是矩阵Mi....Mj之间的乘法的最小次数.根据这个来写代码,就清晰多了。/*问题描述:计算n个矩阵连乘所需的最少乘法次数*/#include #include using namespace std;int Matrix_chain_Multi
2012-01-30 21:13:41 3717
原创 动态规划——装配线调度
问题描述A manufacturing problem to find the fastest way through a factory. There are two assembly lines, each withn stations; thejth station on line i is denotedSi,j and the assembly time at that st
2012-01-29 19:37:19 2070
原创 一个有趣的结构——Treap
如果将一个含有n个元素的集合插入到一课二叉查找树中,所得到的树可能会非常不平衡,从而导致查找时间过长。例如一个集合是一列逆序排列的有序序列,那么在按顺序将这个集合的元素插入到一棵空的二叉查找树时,就会导致这课二叉查找数是一棵只有左子树的树,查找起来的速度并没有像预想中的那样快。因此,一般来说,要为一组固定的元素建立一棵较为平衡的二叉排序树的话,可以采用一种策略就是先随机排列这些元素,然后再按照排列
2012-01-28 18:27:36 1480
原创 第i小元素
在一个含有n个不同数的集合中找到第i小的元素。利用分治的思想,算法的平均时间为O(n)#include #include using namespace std;int Partition(int A[],int p,int r){ int x=A[r],i=p-1,j,temp; for(j=p;j<r;j++) { if(A[j]<=x) { i++;
2012-01-25 18:55:25 935
原创 Ubuntu各个版本
放着 别到时自己忘记了 最近有点时间 探索下ubuntualternate 为文字界面的安装版本, desktop 为包含Live CD的图形界面安装版本, server 为服务器版本, i386 为32位的系统版本, amd64 为64位的系统系统版本,kubuntu 为KDE桌面版本,xubuntu 为Xfce桌面版本,edubuntu 为教育版,m
2012-01-24 16:22:07 1020
原创 Quick_Sort_2
最近看算法导论,看到里面的快排和以前自己一直写的快排不太一样,在分块那里的算法并不一样,下面两个版本的快排中,其中一个是指定一个元素作为比较对象的,另一个是随机指定的。第一个是指定元素作为比较对象的#include using namespace std;int Partition(int A[],int p,int r){ int x=A[r],i=p-1,temp; for
2012-01-23 23:19:14 688
原创 用Random_buffer产生随机序列
使用random_shuffle()算法随机化序列元素 假设你需要指定范围内的随机数,传统的方法是使用ANSI C的函数random(),然后格式化结果以便结果是落在指定的范围内。但是,使用这个方法至少有两个缺点。首先,做格式化时,结果常常是扭曲的,所以得不到正确的随机数(如某些数的出现频率要高于其它数) 。其次,random()只支持整型数;不能用它来产生随机字符,浮点数,字符串或
2012-01-23 18:55:23 1297
原创 大二第一学期总结
大二第一学期学期总结本来想明天早上就回家的 可是收拾东西的时候边看电影加上外面又下雨就决定还是推迟一天在回家,看了铁甲钢拳,很好看的一部电影。推荐下~~回归正题先,这学期就这样很快的过了,真的过的很快,几乎都没什么感觉,他就这样过去了。这学期自己有做了什么吗。回忆一下,暑假的时候抱着C++编程思想的第二卷看了一部分,看得自己云里雾里,接下来就开始看数据结构,剩下的暑假的40多天几乎都是数据
2012-01-13 01:24:15 1967 1
ios小项目——新浪微博客户端
2012-04-28
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人