综合
文章平均质量分 51
chenbingchenbing
这个作者很懒,什么都没留下…
展开
-
通过余弦定理从点积的定义推出点积的公式
通过余弦定理从点积的定义推出点积的公式首先证明余弦定理:有边为a,b,c,对应夹角为a_angle,b_angle,c_angle分别从定点向对应边作对角线可以发现如下关系成立:(1)a=b*cos c_angle + c * cos b_angle(2原创 2011-10-01 22:51:57 · 2499 阅读 · 0 评论 -
将败者树运用到文档匹配打分程序中
length={4}, pfRtv={ 1.000000} length={9}, pfRtv={ 2.000000} length={16}, pfRtv={ 3.000000} length={25}, pfRtv={ 4.000000} doc0 start 10 2.000000 11 3.000000 12 6.000000 13 11.000000 do原创 2011-11-14 14:29:50 · 384 阅读 · 0 评论 -
bitmap汉子匹配
#include #include #include typedef ushort wchar;#define MAX_WORD_LEN 32 int checkbit (char *p ,int value){ int idiv=value/8; int imod=value%8; r原创 2011-11-15 09:38:59 · 532 阅读 · 0 评论 -
用败者树从N个数中选择最大的k个数字
20 21 24 29 36 45 56 69 84 101 120 141 164 189 16 45 76 109 144 181 20 61 104 149 196 45 96 149 4 61 120 181 44 109 176 45 116原创 2011-11-14 11:03:22 · 816 阅读 · 0 评论 -
emacs 中的ring
34 67 89 2223 44 55 775 332 345 675 4234 123 565 345 98 1213 9876 90 353 4242 left ring原创 2011-11-15 18:54:22 · 633 阅读 · 0 评论 -
sed 过滤字符文本 (一行行的)
前面写过用sed对整个文件过滤的,代码很简单。现在这个是能够取出其中的一行行来过滤的,为了获取更多的相关信息。 注意列表中的空格先变为_,然后再变回来,不然会出错。 #/bin/shi=$( grep "chenbing" my.c.temp | sed 's/\ /\_/g' | awk -F "chenbing" '{print$1}')echo $i原创 2011-11-17 13:30:40 · 3223 阅读 · 0 评论 -
用awk进行动态计算
[boris@localhost ~]$ (echo "1&20" | awk -F "&" '{print $1+ $2}' ) 21[boris@localhost ~]$ (echo "1&20" | awk -F "&" '{print $1+ $2}' | awk '{print $0+100}' )121[boris@l原创 2011-11-17 14:10:08 · 895 阅读 · 0 评论 -
emacs 统计字符的个数
(defun countword () (interactive ) (let (( number 0)) (goto-char (point-min)) (while ( (forward-word 1)原创 2011-11-18 09:41:50 · 1403 阅读 · 0 评论 -
emacs 执行数学计算函数fib
(defun fib (n) (if (eq n 1) 1 (if (eq n 2) 1原创 2011-11-18 09:45:52 · 720 阅读 · 0 评论 -
awk 条件打印
awk -F":" '{print $2==20? $0: $1}' chen.data chen.data文件内容为:data:10:1000us:1:32data:20:3000llsd:9:56kk:8:667data:100:2000dat:123:9000结果为(如果第二条记录为20,则打印全行,否则打印第一个记录)dat原创 2011-11-18 10:51:59 · 3443 阅读 · 0 评论 -
grep与sed,awk语义中的共同部分(筛掉特定字符串)
awk '$0 !~/printf/' my.c.tempsed '/printf/d' my.c.tempgrep -v printf my.c.temp 筛掉文件中包含printf的行。原创 2011-11-18 13:49:36 · 351 阅读 · 0 评论 -
grep与sed,awk语义中的共同部分
sed -n '/print/p' my.c.tempawk '/print/' my.c.tempgrep print my.c.temp 这三行代码的出的结果完全一样。 另外对于sed,以下两行命令意义一样.sed -n '/print/p' my.c.tempsed -n 's/print/&/p' my.c.temp原创 2011-11-18 13:12:21 · 453 阅读 · 0 评论 -
对指针的一般认识
对指针的一般认识单个对象的指针应当被当作一种特殊现象,因为指针默认就是支持加法和减法运算的,说明它一直是被当作对象序列的表示方式,虽然是退化的,对象指针只是长度为1的序列指针。采用上面的方式也能解释类型转换的意义,正是因为它具有属性的长度信息,而不是仅具有指向关系,从而在类型决断才能判断是否合理,比如长指针变为短指针,etc.另外从程序设计模型的角度看,被计算对象的对象总是序列,在li原创 2011-10-30 22:28:22 · 324 阅读 · 0 评论 -
考虑香农公式在等概率时的情形
考虑香农公式在等概率时的情形香农公式为H=-(p1*log p1+p2*log p2+...+pn*log pn)在这里如果概率p1=p2=..pn =1/n那上面的公式可以简化为H=-n*p1*log p1 =-n*1/n*log 1/n=log n而H=log n却是在没有任何信息相关条件下二分查找的值,从这里可以看出香农公式在一般实践中的正确性。原创 2011-10-29 22:53:14 · 901 阅读 · 1 评论 -
基础练习
#include #include int fibs (int n){ if (n==1||n==2) return 1; else return fibs(n-1)+fibs(n-2);}typedef struct test{ int thiss; char one;原创 2011-10-31 14:18:14 · 324 阅读 · 0 评论 -
关于树的最少节点数
关于树的最少节点数对于AVL树,因为定义的限制,需要满足如下关系a(n)=a(n-1)+a(n-2)+1存在,所以采用差分的方法是可以推出最后的精确结果的。对于满二叉树,采用国际上的定义,它的最少节点数不是以前习惯想的那样,因为按照新定义,huffman树也是属于满二叉树,按照直觉思维,它的最少节点数应该是这样的,根节点一个,其它每层都有两个节点,当然它的变化形式是多种多样的。可以这样计算原创 2011-11-22 08:25:10 · 1813 阅读 · 0 评论 -
采用算法导论思维的红黑树
/****************************************************************************** * red_black_tree.c * * Download From:转载 2011-11-22 13:21:41 · 643 阅读 · 0 评论 -
regex 第一个版本
#include #include char *error_label="error";char *matchhere (char *regex ,char *text);char *match(char *regex ,char *text){ while(*text!='\0') { char *rtn; rt原创 2011-11-01 14:57:35 · 304 阅读 · 0 评论 -
regex第二个版本 (能够匹配多个内容)
#include #include char *error_label="error";char *matchhere (char *regex ,char *text);void match(char *regex ,char *text){ while(*text!='\0') { char *r原创 2011-11-04 13:59:38 · 876 阅读 · 0 评论 -
我的emacs配置
;; .emacs;;; uncomment this line to disable loading of "default.el" at startup;; (setq inhibit-default-init t);; turn on font-lock mode(when (fboundp 'global-font-lock-mode) (global-font-lo原创 2011-11-28 15:32:35 · 471 阅读 · 0 评论 -
lisa with match (regex) build in ( 1st version toward scan word)
(match 'main 'cb)(match 'printf 'cb)(match 'name 'cb) ( match ( quote main ) ( quote cb ) ) 197 0 main int main(int argc,int ** argv) chenbing 199 0 ( mat原创 2011-11-05 18:28:07 · 330 阅读 · 0 评论 -
lisa with awk build in
(setq result (match 'data 'chen))(print result)(defun awk (lst ) (if (eq lst nil) nil (cons (+ 1 (car (cdr (car lst))))原创 2011-11-06 10:08:50 · 263 阅读 · 0 评论 -
信息的整体与部分
信息的整体与部分如果对于信息的部分一无所知,最好的方式是对整体进行平均划分。这样可以知道在对数级的时间复杂度内得出结果;如果对信息的部分存在的概率有了解,那在对整体划分的时候首先从概率大的部分查找,这样更快的找到最终的结果。所以综合这两种情况,都是要在划分的时候尽量找到可能性最大的部分,如果找不到,也要找到平均的可能而不是找可能性小的那部分。下面从信息论的角度分析排序,假设有5个数,从信息原创 2011-11-06 11:07:21 · 545 阅读 · 0 评论 -
关于信息的表示和文本匹配
关于信息的表示和文本匹配grep与awk用来处理连续的文本并分离出所需要的信息的工具,对于大部分的信息也可以说是数据来说,都是处于这样的存储状态;但对于计算来说,还需要对其中的按规则存储的数据分离,并进行相关的计算,这也就是awk的目的所在。现在思考下如果程序所看到的数据都已经是离散的按规则分离的数据,那可能就不需要这两个工具了,从这个角度看lisa与grep,awk面对的问题是数据的抽象抽象原创 2011-11-06 11:46:16 · 594 阅读 · 0 评论 -
sed 过滤字符文本
sed 's/$/chenbing/' my.c >my.c.temp sed 's/chenbing$//' my.c.temp >my.c 这两行代码的作用是分别将字符串添加到行尾和从行尾去掉。原创 2011-11-06 21:35:20 · 474 阅读 · 0 评论 -
linux 动态库和静态库的编译
g++ -shared -fpic -o libeaconfig.so eaconfig.cppg++ -o t mytest.c ./libeaconfig.so$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$g++ -c eaconfig.cppar -cr libea原创 2011-11-28 17:39:48 · 617 阅读 · 0 评论 -
经过自动压力测试的红黑树(删除功能完备)
#include #include #define COUNT 10000#define RAND (4*COUNT)int error_label=0;#pragma pack(1)typedef enum _color { RED, BLACK }color;typedef struct _d原创 2011-11-28 18:05:45 · 698 阅读 · 0 评论 -
动态堆
在一个最小堆中减少其中元素的值,这个堆能够动态地维护结构。这样就不需要多次对程序进行排序。[0]= 0 1 ||[1]= 1 2 ||[2]= 4 3 ||[3]= 9 9 ||[4]= 16 10 ||[5]= 5 6 ||[6]= 16 7 ||[7]= 9 8 ||[8]= 4 4 ||[9]= 1 5 ||[0]= 0 2 ||[1]=原创 2011-11-07 23:12:21 · 799 阅读 · 0 评论 -
让emacs完美显示中文
(set-language-environment 'Chinese-GB) (set-keyboard-coding-system 'euc-cn)原创 2011-11-29 18:45:37 · 3941 阅读 · 0 评论 -
能够处理冲突的散列表(中文文本匹配)
#include #include #include "tries.h"#include "dicthead.h"#define DEF_TRIES_DIC_VERSION 1struct STRU_TRIES_INN_NODE{ unsigned int m_uiLen; unsigned int m_uiAttr; unsigned int m原创 2011-11-30 11:35:10 · 1054 阅读 · 0 评论 -
pagesearch检索lisp后出现的返回结果
20 1 lisp 1 1445 2 6520640 1682995532原创 2011-11-09 18:56:08 · 1777 阅读 · 0 评论 -
从信息的角度看数字的表示和分割(败者树多路时的层数,树状数组求和时的次数,skiplist层数的确定)
从信息的角度看数字的表示和分割(败者树多路时的层数,树状数组求和时的次数,skiplist层数的确定)当用二进制表示数字时,除了进位关系外,还可以获得一些更弱但更有意义的联系存在。比如思考一个任意的数字它的二进制中1的分布情况,从人的思维角度看,是先看它的最高位应该在哪里?然后采用递归的方法,最后可以完全确定下来。而在观察数字的增长过程中,数字1分布的变化情况,其中体现的是当数字达到2^n次方原创 2011-11-20 21:11:35 · 696 阅读 · 0 评论 -
红黑树用来存储单个汉字GBK编码
#include #include #include #define RAND 10000int error_label=0;#pragma pack(1)typedef enum _color { RED, BLACK }color;typedef struct _data{ int v原创 2011-12-01 10:19:24 · 1064 阅读 · 0 评论 -
将任意数字转化为对应gbk输出的程序
#include #include int main (){ int i; char word[5]={0}; while (scanf("%d",&i) && i) { word[0]=i/256; word[1]=i%256; printf("%s\n",word); }}原创 2011-12-01 14:20:29 · 947 阅读 · 0 评论 -
二路归并的一个版本(寻找共同的元素)
void GetSameDocMergeSearch( int &nCommon, SSDOC_ITEM_TMP *common_doc, SSDOC_ITEM_TMP *left,SDOC_ITEM_TMP *right, int left_length ,int right_length,RTV_TYPE rtv) { int left_tmp=0,原创 2011-11-11 23:47:47 · 298 阅读 · 0 评论 -
第一个Makefile文件(可以用来编译前面红黑树的实现程序和测试程序)
## split Makefile#AR=arARFLAGS=-crCC=gccSRC=rbtree_test.c red_black_tree.cSRCC=OBJ=$(SRC:.cpp=.o)OBJC=$(SRCC:.c=.o)OBJ_DBG=$(SRC:.cpp=DBG.o)OBJC_DBG=$(SRCC:.c=DBG.c.o)CXX_FLAG原创 2011-12-02 12:54:07 · 1557 阅读 · 0 评论 -
hash存储,序列化和调整大小平衡
#include #include #include "hashdict.h"templateEA_COMMON::CHashDict::CHashDict(){}templateEA_COMMON::CHashDict::~CHashDict(){}templateEA_COMMON::ENUM_HASHDICT_OPTYPE EA_COMMON::C原创 2011-12-02 10:11:01 · 913 阅读 · 0 评论 -
二分查找的一个版本
#include #include #define NUM 100typedef struct node{ int x; int y;}node ;node global[NUM]={-999};int count=0;int find(int left,int right,node x){ int原创 2011-11-11 13:16:07 · 329 阅读 · 0 评论 -
用堆做的多路归并的程序 (原始一路路数据必须是先有序的)
m路总数目为n (比败者树差些,比一般的要好)#include #include #define N 150typedef struct data{ int data; int pos;}data;typedef struct wrap_data{ int offset; data *p;}原创 2011-11-12 17:01:43 · 799 阅读 · 0 评论 -
用败者树做的多路归并程序
1. 这个程序目前只考虑到是完全二叉树的叶子节点的情况。2.每个有序序列的末尾都加上了一个MAX_BIG来表示最终的结束,这样做是为了简化程序设计,不然当一个序列的最后一个元素被合并到目的序列时候,不知道该往败者树里面加什么。0 1 2 3 4 5 6 7 8 999999999 1 2 3 4 5 6 7 8 9 999999999 4原创 2011-11-12 21:43:59 · 740 阅读 · 0 评论