算法
cc_hw
这个作者很懒,什么都没留下…
展开
-
浅谈求素数的方法
刚学c的时候,自己能想到的求素数的方法就是从2-(n-1)都不能整出的数就是素数; 后来在《C程序设计语言》知道判断素数值只需要判断到sqrt(n); 如果求一个素数表,或者求前n个素数的和 一般我们判断素数的时候都是每次在一个for里面i++; 不知道大家有木有发现其实只要是偶数就不用判断了所以i+=2;就把时间复杂度降了一倍 另外不知道大家有木有发现,除了2和3 以外的素数都是6的原创 2013-07-23 13:04:03 · 529 阅读 · 0 评论 -
扩展 KMP
#include #include #include using namespace std; const int MM=100005; int next[MM],extand[MM]; char S[MM],T[MM]; void GetNext(const char *T) { int len = strlen(T),a = 0; next[0] = len;原创 2013-09-25 16:14:22 · 506 阅读 · 0 评论 -
KMP算法
学了一些 kmp的算法,现在来总结一下。。。 首先KMP是用来做字符串匹配的,然后里面 关键在于 next数组,next是 kmp的灵魂首先像求 普通字符串匹配一样 求, 最关键的就在于 j=next【j】 ; 这不仅是一个跳跃的过程,也是一个回溯的过程,如果不匹配 直到j==0 回到开始 然后 关键在于next数组的求法,next数组其实就是 该位置 和 字符串开始位置有多少原创 2013-09-21 20:39:02 · 417 阅读 · 0 评论 -
poj 3253 优先队列的使用
这道题刚开始不知道是用优先队列 以前做过这道题的,用的是排序使用快排都用了400+ms 先说说优先队列的使用方法吧 priority_queueint, vectorint>, greaterint> > que; 使用stl来定义一个升序的队列 有了队列这道题就很好做了 每次把队列最小的两个值 出对 然后得到相加的值入队 每次贪心就有结果了 #include #in原创 2014-03-28 21:18:49 · 451 阅读 · 0 评论