- 博客(19)
- 收藏
- 关注
原创 《天才在左疯子在右》
这一天都是昏昏沉沉的,没有精神,晚上重新看了一下这本书,第一次看还是在遥远的大二,那时候觉得非常非常好看,看完后还和某个大神同学讨论,跟他讲里面的案例。其实心理学真的很奇妙,有很多你想不到的有趣案例,精神病人的世界未必就是恐怖怪诞的,有些或许会很温情,就像这本书里面讲的《永远永远》故事,再读还是觉得非常感动,可能因为我爷爷的缘故,他也有几乎差不多一样的经历,不过不是跟我奶奶了,是另外一个人。天才和
2013-04-14 21:05:48
965
原创 我看《送你一颗子弹》
这本书断断续续花了一个多星期给看完了,刚开始觉得刘瑜写的东西很琐屑,读到后面发现其实文字很诙谐,她应该是个很有幽默感的人,有幽默感的人的生活态度和知识面应该不差,再说她也是个大牛的人。政治学博士,第三性别,呵呵其实从她的文字里面,我看到一个小女人,一个理性的、睿智的、幽默大方的、渴望爱的小女人,或许还有很多特质我无法用匮乏的成语来形容。话说回来,她喜欢看电影,而我却不那么热衷花几个小时看电影而宁愿
2013-03-17 21:19:57
718
原创 判断数组中的数值是否连续
#include#includebool IsContinuous1(int *arr,int N){/*整数数列,元素取值为0...65535中任意一个不重复的数,0可以出现多次 1、元素值可以乱序。 2、0可以匹配任何数值。 3、0可以多次出现。 4、全0算连续、只有一个非0也算连续。 */ int min = -1,max = -1; for(int i = 0;i
2013-03-16 13:52:51
1689
原创 编程之美-从无头单链表中删除结点
void DeleteRandomNode(node *pCurrent){//从无头单链表中删除结点 assert(pCurrent != NULL); node *pNext = pCurrent->next; if(pNext != NULL) { pCurrent->next = pNext->next; pCurrent->data = pNext->data;
2013-03-16 12:51:03
702
原创 编程之美-字符串移位包含
int StrInStr1(char *src,char *des){//方法一:穷举src循环移位的字符串组合,每个都跟des比较 int len = strlen(src); for( int i = 0; i < len; ++i) { char tempchar = src[0]; for( int j = 0; j < len - 1;++j) //循环左移
2013-03-16 12:14:11
657
原创 我读《ZOO》、《夏天烟花我的尸体》
乙一的两本知名怪诞小说《zoo》、《夏天烟花我的尸体》都拜读过了,初衷是抱着看恐怖小说的心情去看的,看完了才发现其实不恐怖,用怪诞来形容很贴切。 在卓越上买书的时候一开始是贪便宜买的两本书,都打5折才十几块钱就200多页了,看完才发现虽然期望没有我想的那么高,但是还是有阅读的享受的,算是感觉了另外一种文风吧。看网上的书评是挺好的,说了一大堆的好话、一大堆的有N多专业术语的读后感,到
2013-03-15 22:53:26
1266
原创 找出数组中唯一的重复元素
数组a[N],1至N-1这N-1个数存放在a[N]中,其中某个数重复一次。找出这个数void xor_findDup1(int *a,int N){//方法一:求和 int tmp1 = 0; int tmp2 = 0; for(int i = 0;i < N - 1; ++i) {//tmp1为1...N-1的和,tmp2为数组所有元素的和 tmp1 += (i + 1);
2013-03-15 15:20:20
613
转载 编程之美-最大公约数
int gcd1(int x,int y){//欧几里得辗转相除法 return (!y)?x:gcd1(y,x % y);}int gcd2(int x,int y){//能除的尽x,y的数,也能除的尽x-y,y if( x < y) return gcd2(y,x); if( y == 0 ) return x; else return gcd2(x - y,
2013-03-15 13:44:34
576
转载 判断一个较大的单链表是否有环及求环的入口点
/*判断单链表中是否有环*/struct ListType{ int data; struct ListType *next;};typedef struct ListType *list;int IsLoop(list s){//双指针法 list fast = s; list slow = s; if(fast == NULL) return -1;
2013-03-14 15:13:58
582
转载 编程之美-数组循环移位
#includevoid RightShift1(int *arr,int N,int K){//循环右移 K %= N; while(K--) { int t = arr[N - 1]; for(int i = N - 1; i > 0;--i) { arr[i] = arr[i - 1]; } arr[0] = t; }}void Reverse
2013-03-14 12:39:01
527
原创 编程之美-寻找发帖水王
Type Find(Type *ID,int N){//寻找发帖"水王",假设只有一个 Type candidate; int nTimes,i; for( i = nTimes = 0; i < N; i++) { if(nTimes == 0) { candidate = ID[i]; nTimes = 1; } else { if(candi
2013-03-13 13:10:18
606
原创 编程之美—不要被阶乘吓倒
int FactorialZeroNum1(int N){//N!末尾有多少个0,求1..N各个数的5的因子有多少个 int ret = 0; for(int i = 1 ; i <= N ; ++i) { int j = i; while( j % 5 == 0) { ret++; j /= 5; } } return ret;}int Facto
2013-03-13 12:25:19
564
原创 sizeof(&b)与VC++中的bug
int main(){//2013/3/12//sizeof(&b)在VC++6.0中为400,而在Devc++中则是4,&b的类型是int (*)[100],明显是一个指针,应该是4 int b[100]; int *c = &b; //编译错误 cannot convert `int (*)[100]' to `int*' in initialization int (*a)
2013-03-12 16:05:40
645
原创 在O(n)时间复杂度内找出数组中的众数
bool FindMostApperse(int *num,int len,int &candidate){ int count = 0; for(int i = 0;i < len;++i) { if(count == 0) //目前得到的数出现次数为0时,更换另外一个数 { candidate = num[i]; co
2013-03-12 15:10:32
5035
2
原创 找出数组中重复次数最多的数
#include#include#includeusing namespace std;//以空间换时间int GetMaxNum(int *arr,int len,int &num){//找出数组arr中最大的数及其下标 int index = arr[0]; int i; for( i = 0;i <= len;++i) //注意这里是闭区间,理
2013-03-12 14:40:57
1328
原创 编程珠玑第十四章—堆
习题:5、将箱序列组织成堆,父结点代表了它的子节点中最不满的结点的箱的剩余空间,堆顶应该是最大容量的箱。以”首次适应“启发式方法按序考虑权值,在决定往哪里放新权值时候,尽量往左搜索,只要左边最不满的箱子有足够的空间放该权值就尽量往左,迫不得已才往右。当把权值放入箱子后,箱子容量减少,向下调整使其保持堆性质。这样所需时间正比于O(log(n))。6、让结点i指向i+1和2i结点。就像组织成一
2013-03-12 11:29:42
760
转载 判断两个单链表(无环)是否交叉
bool IsIntersect(Node *list1,Node *list2,Node *&value){//判断两个单链表(无环)是否交叉 value = NULL; if(NULL == list1 || NULL == list2) return false; Node *temp = list1,*temp2 = list2; int len1 = 0,len2 = 0
2013-03-11 20:32:45
588
转载 删除单链表中的重复结点
方法一:递归link delSame(link head){/* 不变式:list{k..n-1}没有重复的元素,加入list{k-1}后,为了保持不变式 要从list{k-1..n-1}两两比较,如果有相同元素必定在开头两个*/ link pointer,temp = head; if(head->next == NULL) return head; head->next =
2013-03-11 20:14:25
974
原创 合并两个有序链表(非交叉)
Node *MergeRecursive(Node *head1,Node *head2){//递归合并两个有序链表 if(head1 == NULL) return head2; if(head2 == NULL) return head1; Node *head = NULL; if(head1->data data) { head = head1; head->
2013-03-11 19:48:15
539
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人