摘要: O(nlogn)的算法关键是它建立了一个数组temp[],temp[i]表示长度为i的不下降序列中结尾元素的最小值,用top表示数组目前的长度,算法完成后top的值即为最长不下降子序列的长度。设当前的以求出的长度为top,则判断num[i]和temp[top]:1.如果num[i]>=temp[to... 阅读全文
posted @ 2014-09-14 11:15 cnyali 阅读(130) 评论(0) 推荐(0) 编辑
摘要: 问题描述设有N堆沙子排成一排,其编号为1,2,3,…,N(N #include int n,f[101][101],sum[101][101],a[101];int main(){ int i,j,k,t; scanf("%d",&n); for(i=1;if[i][k]+f[k+1][j... 阅读全文
posted @ 2014-08-28 08:14 cnyali 阅读(123) 评论(0) 推荐(0) 编辑
摘要: 求前n个自然数的平方之和: S=1^2+2^2+3^2+……+n^2因为(1^2+2^2+3^2+…+n2)/(1+2+3+…+n) =(2n+1)/3又由于 1+2+3+…+n=n(n+1)/2,因此得到: 1^2+2^2+3^2+…+n^2=n(n+1) (2n+1)/6推导过程:有一个三... 阅读全文
posted @ 2014-08-23 15:52 cnyali 阅读(444) 评论(0) 推荐(0) 编辑
摘要: #include #include #include #define MAX 100char stack[MAX];int top=-1;void fun( char a[],char b[]){ int i,len,j; len=strlen(a); j=-1; for(i... 阅读全文
posted @ 2014-08-22 16:56 cnyali 阅读(233) 评论(0) 推荐(0) 编辑
摘要: /*Author:Cnyali*/#include#include#include struct point{ //结点结构 ; long key,first; //key为权值,first为优先值; struct po... 阅读全文
posted @ 2014-08-22 16:55 cnyali 阅读(113) 评论(0) 推荐(0) 编辑
摘要: #include#include#include#include#define MAXN 101char s[MAXN];int calac(int L, int R){ int i, p = -1, lv = 0; int m = 0; for (i = L; i <= ... 阅读全文
posted @ 2014-08-22 16:46 cnyali 阅读(134) 评论(0) 推荐(0) 编辑
摘要: 在介绍KMP算法之前,先介绍一下BF算法。一.BF算法 BF算法是普通的模式匹配算法,BF算法的思想就是将目标串S的第一个字符与模式串P的第一个字符进行匹配,若相等,则继续比较S的第二个字符和P的第二个字符;若不相等,则比较S的第二个字符和P的第一个字符,依次比较下去,直到得出最后的匹配结果。 举例说明:S: ababcababaP:ababa BF算法匹配的步骤如下 i=0 i=1 i=2 i=3 i=4 第一趟:ababcababa 第二趟:ababcababa 第三趟... 阅读全文
posted @ 2014-01-25 10:47 cnyali 阅读(182) 评论(0) 推荐(0) 编辑
摘要: Trie树也称字典树,因为其效率很高,所以在在字符串查找、前缀匹配等中应用很广泛,其高效率是以空间为代价的。一.Trie树的原理 利用串构建一个字典树,这个字典树保存了串的公共前缀信息,因此可以降低查询操作的复杂度。 下面以英文单词构建的字典树为例,这棵Trie树中每个结点包括26个孩子结点,因为总共有26个英文字母(假设单词都是小写字母组成)。 则可声明包含Trie树的结点信息的结构体:#define MAX 26typedef struct TrieNode //Trie结点声明 { bool isStr; ... 阅读全文
posted @ 2014-01-25 10:46 cnyali 阅读(224) 评论(0) 推荐(0) 编辑