- 博客(17)
- 资源 (4)
- 收藏
- 关注
原创 Boyer-Moore 算法详解
写在前面:我的本意是想以通俗的语言来介绍Boyer-Moore,可是“学术”一点的语言毕竟有它存在的合理性,所以,额…… 我的另一个意图是想详细介绍good-suffix shift的计算方法——因为中文世界中看不到对其完整的介绍:涉及到good-suffix的地方不是被直接跳过,就是仅仅给出一段代码——而这个部分的算法其实相对于Boyer-Moore本身来说更是精巧。
2010-01-12 11:15:00 3475 2
原创 C++ 数值算法啊
作为数值分析科目的期末任务之一,我完成了几个 C++ 的数值算法,如下: 牛顿插值法 –> 插值 最小二乘法 –> 曲线拟合 高斯消去法 –> 线性方程组的直接解法 雅克比迭代法 –> 线性方程组的迭代解法 高斯赛德尔迭代法 –> 线性方程组的迭代解法 二分法 –> 非线性方程组求根 牛顿迭代法 –> 非线性方程组求根 幂法 –> 矩阵特征值问题 改进欧拉法 –> 常微分初值问题
2010-01-09 21:35:00 1255
原创 传说中的倒排索引
倒排索引 这名字看起来当真很吓人,不过从原理说起来倒是很简单: 穷举所有关键词,每个关键词对应着出现过这个词的文件名,以及这个词在那个文件中出现的个数、位置等信息,这样搜索某个关键词的时候就可以很快得到对应的搜索结果;而搜索多个关键词的话也就是对解集求交集或是并集的问题了。 比如说,我设计的格式大概是这样: Version X keywordI { filenameI
2009-12-20 22:12:00 577
原创 软件设计师考试……
抱着凑热闹的心态报名软件设计师考试了,可硬是没想到题目比我想象中的简单那么多,甚至让我有了我七成的把握通过——嗯,不过问题是,我竟然没有注意到最后三题是选做一题的,结果全给做了。嗯,现在说重点,我发现最后一题有问题! (有问题又怎样?发现了又怎样?做对了又怎样?做错了又能怎样?)题目是这样的:给定一个序列,确定它能不能由序列 1, 2, 3, 4, … n 经过一个栈之后生成例
2009-11-14 10:34:00 524
原创 见到一个骇人的东西:fastcoll
fastcoll 可以用来对给定的前缀快速生成md5碰撞 (也就是说,生成两个不同的文件,每个文件都是在给定的内容后面附加一段东西生成的)——它有多快呢,摘要上说平均复杂度为 234.1,可以在5分钟之内对任意的初始值求得MD5碰撞其实他说5分钟真是太悲观了,拿它自己的 main.cpp 试试: 3.499 秒。 再看它自动生成的 main_msg1.cpp:
2009-11-10 20:45:00 8261 1
原创 POJ 1011 Sticks
写这篇文章呢,有个很邪恶的目的,就是提高博客的访问量——据我所知“POJ 1011”这个关键词似乎非常极其的热门——是不是?当时我做这题的时候的确就写了下面这么长的代码,不过你读一遍就会发现 3/4 的内容都被注释掉了,那些内容多少能说明我的思想,而剩下来的那部分是可以 AC 的。PS. 我真的不喜欢全局变量。PPS. 以后这里不会再放ACM的代码了;感兴趣的话可以等河蟹
2009-05-17 08:49:00 962
原创 心血来潮
这学期学数据结构与算法了,清华大学出版社,ISBN 7-302-06866-6 的那家伙。刚才心血来潮,把第二章的习题都给做了~ 用 Python ~现在我打算心血来潮把我的答案都给放出来~第一题 打印杨辉三角#!/usr/bin/python#-*- encoding:utf-8 -*-#打印杨辉三角a=[1]b=[1]n=input("How
2009-02-16 22:04:00 691
原创 看这里看这里看这里
http://blog.163.com/iamyuguo@126/blog/static/328033302008116115334277/
2008-12-07 16:13:00 738
原创 给v8的shell加个system函数吧~
当然,我针对的正是Google Chrome 用的那个 v8 引擎的 sample 文件夹下的 shell.cc给它加个 system 函数会增加很多乐趣的~放送代码:v8::Handle System(const v8::Arguments& args){ if(args.Length()!=1) return v8::ThrowException(v8::String::N
2008-11-07 18:18:00 954
原创 字符串匹配之Horspool算法
基于后缀,应该算是Boyer-Moore算法的简化算法,详情——嗯——依然参阅《柔性字符串匹配》这本好书(因为我肯定没法讲得比他清楚)。我的实现如下:templateclass OutputFunctionType >size_t Search_Horspool(const char* Str, const char* T, OutputFunctionType out)//在Str中寻找T,返回
2008-09-12 18:50:00 3558 1
原创 字符串匹配之Shift And算法
基于前缀的搜索——详情参阅《柔性字符串匹配》这本好书,别的就不多说了直接给出我的实现...template class Output_Function>size_t Shift_And(const char* source,const char* to_find,Output_Function out){/** * 在source中查找to_find,利用out输出每次出现的地方 * 返回to_f
2008-09-12 18:38:00 1436
原创 英语的数字——是多少呢
举个例子,nine hundred and eighty seven million six hundred and fifty four thousand three hundred and twelve,它究竟是多少呢?这种东西简直不是给人看的,所以呢,咱们想一个算法来翻译它吧。首先分析一下上面那个数字——嗯,断句先——nine hundred and eighty seven million
2008-09-12 18:09:00 1108 1
原创 我来了
其实我还是很差——但是经过辛苦的一年,现在勉强算是积攒起一点来到CSDN这个地方的胆量了——毕竟闭门造车不见得是个好习惯,而且在学校中靠老师和靠书本已经很难满足我了。 ——当然,另一个原因是,寝室终于接了网线。
2008-09-12 17:56:00 487
原创 求解数独
数独是一种折磨人的游戏,感兴趣却不懂者随便baidu一下就知道其规则了我的这个解法原理是先根据数独的规则,找出能快速确定的数字: 1,这一点能且仅能取某值; 2,这一行 / 列 / 格 没有其他的点能取某值。然后如果没有解出该数独则再用回溯法搜索解空间。此算法的效率相当不错。class sudoku{ char board_map [9][9];//盘面 char bac
2008-02-12 03:16:00 1063 1
原创 求解马的周游路线
马的周游路线(knights tour)讲的是在一个国际象棋棋盘上,让一匹马用64步跳完64个格子的问题。我这个算法是按照深度优先算法搜索整个解空间,虽然对于 8*8 的棋盘时间消耗上还算很短,但其效率绝对还是不高的。后来看了易语言的示例,发现其实可以用贪心算法来找到马的周游路线,就是每次都走到剩下可行的步数最少的格子去——但是不理解原理。#include using namespace std
2008-02-12 03:01:00 1445
原创 解行列式
这是我刚开学不久写的解行列式的算法,原理很简单,就是将行列式按行、列展开计算。 #include using std::cin;using std::cout;template void input(int &d,T** &m){ cout>d; m=new T*[d]; for (int i=0;i cout for (int i=0;i
2008-02-12 02:49:00 1097
我写的计算器,小改了一番
2008-02-14
我写的计算器
2008-02-12
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人