2012年6月10日

摘要: int max(int A[],int begin,int end){ int i,j; int max=0; for(i=0;i<=end;i++){ for(j=i;j<=end;j++){ int m=i;int sum; for(;m<=j;m++){ sum+=A[m]; } if(max<sum) max=sum... 阅读全文
posted @ 2012-06-10 16:49 蓝色守望 阅读(2253) 评论(0) 推荐(0)

2012年6月9日

摘要: 当我们的程序崩溃时,内核有可能把该程序当前内存映射到core文件里(提示core dumped),方便程序员找到程序出现问题的地方。可是当我们ls时发现没有core这个文件,因为系统默认是不生成的,我们需要输入命令ulimit -c size来限制生成的文件大小。假设需要编译的程序名为test.c,gcc test.c -g -o test,gdb test core来查看出错信息,如果我们输入where就可以查看出错时的堆栈信息,能够精确定位出错的地方。当程序接收到以下UNIX信号会产生core文件:名字说明ANSI C POSIX.1SVR4 4.3+BSD缺省动作SIGABRT异常终止( 阅读全文
posted @ 2012-06-09 20:21 蓝色守望 阅读(1022) 评论(0) 推荐(0)
摘要: 今天下午什么都不想做,心情没那么好,感觉什么都要做,什么都不想做。不过想想不能这么浪费了,决定在一个小时内写个简单的图算法。 阅读全文
posted @ 2012-06-09 15:52 蓝色守望 阅读(102) 评论(0) 推荐(0)

2012年6月8日

摘要: pid_t fork(void);如果是子进程则返回0,为父进程返回子进程ID,出错返回-1.子进程除了共享正文段之外,其数据空间,堆,栈都是父进程的副本。fork失败的2个主要原因是:系统中进程太多,或者该实际用户ID的进程超过了系统限制。fork的用法:1.一个父进程希望复制自己,使父,子进程同时执行不同的代码段。如父进程等待客户端请求,请求到时,fork子进程来处理请求。父进程继续等待下一个请求。 2.一个进程要执行一个不同的程序。在这种情况下,子进程从fork返回后立即调用exec.vfork与fork的返回值一样,但两者很大不同:首先子进程在父进程地址空间中进行,知道调用exec或者 阅读全文
posted @ 2012-06-08 21:34 蓝色守望 阅读(184) 评论(0) 推荐(0)
摘要: 本文参照:作者:July,yansha,5,编程艺术室。 出处:http://blog.csdn.net/v_JULY_v。如何给10^7个不重复的数据量的磁盘文件排序?2种解决方案。 1、归并排序。你可能会想到把磁盘文件进行归并排序,但题目要求你只有1MB的内存空间可用,所以,归并排序这个方法不行。2、位图方案。熟悉位图的朋友可能会想到用位图来表示这个文件集合。例如正如编程珠玑一书上所述,用一个20位长的字符串来表示一个所有元素都小于20的简单的非负整数集合,边框用如下字符串来表示集合{1,2,3,5,8,13}:0 1 1 1 0 1 0 0 1 0 0 0 0 1 0 0 0 0 0 0 阅读全文
posted @ 2012-06-08 19:35 蓝色守望 阅读(1157) 评论(0) 推荐(1)

2012年6月7日

摘要: View Code #include <stdlib.h>#include <stdio.h>#include <assert.h>#define Elem inttypedef struct Node{ int elem; struct Node *next;}Node;typedef struct Quece{ Node *front; Node *rear;}Quece;Quece *initQuece(){ Quece *T=(Quece *)malloc(sizeof(Quece)); if(!T) exit(0); N... 阅读全文
posted @ 2012-06-07 10:31 蓝色守望 阅读(1354) 评论(0) 推荐(0)
摘要: 统计一个月内访问百度最多的那个IP?理论上IP最多有2的32次方个,每个IP是32字符,那么总共占128G。但是实际上能有十分之一的IP访问就不错了,所以可以考虑用hash把所有的IP读入内存,这样就可以统计出了。 阅读全文
posted @ 2012-06-07 10:23 蓝色守望 阅读(122) 评论(0) 推荐(0)

2012年6月6日

摘要: 给你A,B两个文件,各存放50亿条URL,每条URL占用64字节,内存限制是4G,让你找出A,B文件共同的URL?这里考虑用Bloom Filter来解决。K 为哈希函数的个数m 为位数组n 为元素个数。当k=ln2*m/n时,误差最低。设误差为E,则m=n*log2(1/E)(2为下标),此时m为最小值。在哈希函数的个数取到最优时,要让错误率不超过E,m至少需要取到最小值的1.44倍。4G大约等于340亿bit. 此时n=50亿,按照上述的方式,假设误差不超过0.01,则n大约为340亿为,正好可以满足情况。适用范围:可以用来实现数据字典,进行数据的判重,或者集合求交集 阅读全文
posted @ 2012-06-06 20:03 蓝色守望 阅读(109) 评论(0) 推荐(0)

2012年6月4日

摘要: View Code #include <stdio.h>#include <string.h>int parent(int i);int left(int i);int right(int i);void max_heapify(int A[],int i);void bulid_max_heap(int A[]);void heapSort(int A[]);int heapSize=0;int parent(int i){ return i/2;}int left(int i){ return i*2;}int right(int i){ return i*2+1; 阅读全文
posted @ 2012-06-04 14:26 蓝色守望 阅读(122) 评论(0) 推荐(0)
摘要: View Code #include <stdio.h>void merge(int A[],int tmp[],int left,int right,int end);void mergeSort(int A[],int tmp[],int begin,int end);void mergeSort(int A[],int tmp[],int begin,int end){ if((end-begin)>0){ int mid=begin+(end-begin)/2; mergeSort(A,tmp,begin,mid); mergeSort(... 阅读全文
posted @ 2012-06-04 08:57 蓝色守望 阅读(150) 评论(0) 推荐(0)

导航