摘要: 想把算法描述清楚真是件费时费力费脑筋的事情啊,下面的算法描述部分源自以下连接:http://www.cnblogs.com/zhangchaoyang/articles/2012070.html感谢哥么写的文字描述的很清晰;我用两种方式实现“最长公共子序列”算法:1.动态规划的顺序实现;2.动态规划的递归实现;3.都用c实现,linux平台编译,代码附在文章末尾; 最长公共子序列最长公共子序列与最长公共子串的区别在于最长公共子序列不要求在原字符串中是连续的,比如ADE和ABCDE的最长公共子序列是ADE。我们用动态规划的方法来思考这个问题如是求解。首先要找... 阅读全文
posted @ 2014-02-19 16:27 McQueen1987 阅读(1905) 评论(0) 推荐(0)
摘要: 目的:主要是练习c里面单链表的实现,递归思想复习;#include #include typedef struct _Node{//定义单链表的节点 int value; struct _Node *next;}Node;Node* link(int len){//新建一个单链表 int i=0; Node* head = (Node*)malloc(sizeof(Node)); head->value = -1; Node* tail = head; for(;ivalue=i; ... 阅读全文
posted @ 2014-02-18 17:19 McQueen1987 阅读(670) 评论(0) 推荐(0)
摘要: 问题给定一个长度为N的数组,找出一个最长的单调自增子序列(不一定连续,但是顺序不能乱)。例如:给定一个长度为6的数组A{5, 6, 7, 1, 2, 8},则其最长的单调递增子序列为{5,6,7,8},长度为4.解决方案:1,新建一个二维数组ret[ ][ ];以数组A[ ]={2 , 1 , 5 , 9}为例: ~ 2 1 5 90 0 0 0 0 0 //为了方便计算,第0行第0列均设为01 0 2 1 1 1 2 0 E 5 5 //第2行表示子串长度为2,该位置及前面元素的长度为2的最长递增子序列3 0 E 9... 阅读全文
posted @ 2014-02-18 17:08 McQueen1987 阅读(982) 评论(0) 推荐(0)
摘要: 问题描述 :从一组数字中,找出其所有连续子序列中,和数(子序列所有数字求和)最大的连续子序列:如:数组 int A[ ] = {-4 , 3 , 5 , -1};找出某几个连续的子序列其和最大。比如A0+A1 = -1 。A1+A2+A3+A4 = 3。而A2+A3=8;则A2 A3组成的数组即是所... 阅读全文
posted @ 2014-02-17 14:01 McQueen1987 阅读(3773) 评论(0) 推荐(0)
摘要: 原型:char *itoa(int value,char *string) 功能:将整数value转换成字符串存入string,默认为十进制; 说明:返回指向转换后的字符串的指针 #include#include#include#include#include#define SWAP(a,b) (a)^=(b);(b)^=(a);(a)^=(b) char* strReverse(char* str){ assert(str!=NULL);//if(NULL == str) return; char *front,*rear; front=re... 阅读全文
posted @ 2014-02-15 00:01 McQueen1987 阅读(2058) 评论(0) 推荐(0)
摘要: 说明: 原型:char *strstr(char *haystack, char *needle); 用法:#include 功能:从字符串haystack中寻找needle第一次出现的位置(不比较结束符NULL)。 说明:返回指向第一次出现needle位置的指针,如果没找到则返回NULL。 函数myStrstr是我自己写的;函数standardStrstr是标准函数,可对比参考;#include#include#includechar* myStrstr(char srce[],char check[]){ assert(NULL != sr... 阅读全文
posted @ 2014-02-14 17:00 McQueen1987 阅读(349) 评论(0) 推荐(0)
摘要: 问题:输入:“how are you baby-- "输出:”woh era uoy --ybab "#include#include#define SWAP(a,b) (a)^=(b);(b)^=(a);(a)^=(b)char* sentenceReverse(char* input){ if(NULL == input) return; char *r,*f; char *inp = (char*)malloc(sizeof(char)*(strlen(input)+1)); //当input是const时其内容不能... 阅读全文
posted @ 2014-02-12 22:47 McQueen1987 阅读(295) 评论(0) 推荐(0)
摘要: 实现字符串的原地翻转:#include#include#include#define SWAP(a,b) (a)^=(b);(b)^=(a);(a)^=(b)char* strReverse(char* str){ assert(str!=NULL);//if(NULL == str) return; char *front,*rear; front=rear=str; while(*rear) rear++; rear--; while(rear > front){ SWAP(*... 阅读全文
posted @ 2014-02-12 20:08 McQueen1987 阅读(436) 评论(0) 推荐(0)
摘要: 练手代码,适用初级码农:#include#include#includeint count(const char * str){//计算数组长度 if(NULL == str) return -1; int len=0; char const *pt= str; while(*pt++) len++; return len;}int count1(const char* str){//计算数组长度 assert(str!=NULL); const char* pt... 阅读全文
posted @ 2014-02-12 20:04 McQueen1987 阅读(1062) 评论(0) 推荐(0)
摘要: 查了下采蘑菇问题,用c写的相当困难,把自己绕进去了。最后发现问题出在:采蘑菇的小姑娘起始位置是在数组之外的,而非数组的起始位置。所以在数组下标上折腾了好久。采蘑菇问题描述引用以下博客:http://blog.chinaunix.net/uid-26456800-id-3194477.html【描述】萌萌走出山路后,来到一片草地,发现过了草地有巨型蘑菇,于是他准备采摘一些。但是他对保护花草却很重视,他不忍心踩死花草,但为了蘑菇,他只能尽量少踩死几株。现在,草地上也像一条路,上面有n个点,第N个点就是巨型蘑菇所在地(上面没草),每个点上都有i株小草或j株蘑菇(也就是说有蘑菇就没有草),他每次最多跨 阅读全文
posted @ 2014-02-11 18:06 McQueen1987 阅读(381) 评论(0) 推荐(0)