2012年8月29日

最长公共子串和最长公共子序列

摘要: 最长公共子串:在两个字符串中找到一个最长的公共子串,要求子串在原串中是连续的。   最长公共子序列:在两个字符串中找到一个最长的公共子串,不要求子串在原串中是连续的。 阅读全文

posted @ 2012-08-29 16:36 favourmeng 阅读(1639) 评论(0) 推荐(0) 编辑

2012年8月28日

最长单调子序列及计数(poj1952)

摘要: 被这个问题困住了,就像憋了一泡屎,但是便秘了,不往下说了,你懂的。   在网上查了各种资料,各种文章,其实大家说的都差不多,无非是枚举、求该序列和它的排序后的序列的最大公共子序列、动态规划、基于〈二分法和统计研究〉论文。最基本最正常路子应该是动态规划,很多人会给出一个公式,然后给出一段代码,我看了很多,最终只看懂了一个。描述如下:   比如:另d[i]表示数列1到i, 以i结尾的最大长度值, 而令d[i] = max{ d[j]+1} (1 a[i])也就是说,对于每个可以接上的值, 都有a[j] a[i](递减), 看谁能接的长, 自然就是最优解了。如果没有可接的, 就说明对于a[i]前边的没一个值, 都有a[j]a[i], 也就是说a[i]是迄今位置最大的数了, 那么有d[i] = 1; 阅读全文

posted @ 2012-08-28 14:32 favourmeng 阅读(1087) 评论(0) 推荐(0) 编辑

2012年8月23日

迷宫最短路径(DFS)

摘要: 前面的《顺序栈和迷宫求解》中已经提到,用栈DFS的方法求得的路径是非最短路径。如果要求得最短路径需要进一步处理。 1. 增加一个全局数组(PrintType **g_MazeFootPrint),用来存放到某个节点的最短路径长度(shorteststep)和到达该节点的上一个节点位置(parent)。typedef struct{ PosType parent; int shorteststep;}PrintType;PrintType **g_MazeFootPrint; 2. 修改“是否可走”的条件,即修改如下函数:1 Status MazePass(PosType p... 阅读全文

posted @ 2012-08-23 14:23 favourmeng 阅读(6321) 评论(0) 推荐(1) 编辑

2012年8月22日

迷宫最短路径(BFS)

摘要: 用队列实现广度优先搜索(BFS),找出最短路径。用栈保存走过的路径,并输出路径和标识最短路径的地图。输入用例: 0:路 1:墙壁24 240 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 00 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 00 0 0 0 1 1 0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 1 0 00 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 00 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0.. 阅读全文

posted @ 2012-08-22 16:42 favourmeng 阅读(980) 评论(0) 推荐(0) 编辑

顺序栈和迷宫求解(C语言)

摘要: 顺序栈 根据《数据结构》书中的讲解,对顺序栈的一个基本实现。define.h 1 // define.h 2 #ifndef __MENGQL_DEFINE__ 3 #define __MENGQL_DEFINE__ 4 5 #define C_LOG_DBG(format, ...) 6 //printf("[%s@%s,%d] " format ,__FUNCTION__, __FILE__, __LINE__, ##__VA_ARGS__); 7 #define C_LOG_ERR(format, ...) printf("[%s@%s,%d] " 阅读全文

posted @ 2012-08-22 11:47 favourmeng 阅读(1791) 评论(0) 推荐(0) 编辑

2012年8月21日

循环队列(c语言)

摘要: 在循环队列中,Q->front==Q->rear 并不能确定队列为空,也有可能是队列已满,所以采用“队列头指针在队列尾指针的下一位置”来判断队列已满(此方法会浪费一个内存空间)。《数据结构(C语言版)[严蔚敏_吴伟民]》中63页有讲解。 此程序,在书中例子的基础上,增加了内存空间不足的重新分配。define.h 1 // define.h 2 #ifndef __MENGQL_DEFINE__ 3 #define __MENGQL_DEFINE__ 4 5 #define C_LOG_DBG(format, ...) 6 //printf("[%s@%s,%d] &quo 阅读全文

posted @ 2012-08-21 17:29 favourmeng 阅读(3175) 评论(0) 推荐(0) 编辑

链式队列(c语言)

摘要: define.h 1 // define.h 2 #ifndef __MENGQL_DEFINE__ 3 #define __MENGQL_DEFINE__ 4 5 #define C_LOG_DBG(format, ...) 6 //printf("[%s@%s,%d] " format ,__FUNCTION__, __FILE__, __LINE__, ##__VA_ARGS__); 7 #define C_LOG_ERR(format, ...) printf("[%s@%s,%d] " format ,__FUNCTION__, __FILE_ 阅读全文

posted @ 2012-08-21 16:29 favourmeng 阅读(296) 评论(0) 推荐(0) 编辑

导航