2009年12月26日

POJ-1804 Brainman

摘要: 1804和2299一样是求逆序数的,用二路归并排序求解。 阅读全文

posted @ 2009-12-26 17:16 John Waken 阅读(245) 评论(0) 推荐(0) 编辑

POJ-1007 DNA Sorting

摘要: 此题也是关于逆序数的,当然可以用归并排序的方法,但是我注意到服务器提供的数据量较小,最普通的方法应该都可以通过,所以就用了个逐个比较求逆序数的算法,然后再用直接插入排序把DNA按逆序数大小排列起来,最后输出。果真AC了,哈哈!源码如下:[代码] 阅读全文

posted @ 2009-12-26 17:01 John Waken 阅读(443) 评论(0) 推荐(0) 编辑

POJ-2299 Ultra-QuickSort

摘要: 题目实质是求一个序列的逆序数,用归并排序附带求出逆序数。具体算法就不说了,可以Google出很多。只是在POJ提交时要注意栈溢出:因为序列中最多有500000-1个数,所以我们要用数组int a[500001]来保存。但是千万小心,这个数组不能定义在main函数中,要搞成全局变量。可以参考某网友的解答: http://www.slyar.com/blog/poj-2299-c.html 阅读全文

posted @ 2009-12-26 16:13 John Waken 阅读(446) 评论(0) 推荐(0) 编辑

POJ-1455 Crazy tea party

摘要: 解析: 为使题目保持简单,我们取个特例,5个人。从中任取一人给他赋一个标号1,然后从他沿逆时针方向一次给游戏者编号,这样我们就得到一个序列 (1) 1 2 3 4 5要使左边的人到右边去,右边的人到左边去,那么下面的序列肯定满足条件 (2) 5 4 3 2 1由序列(1)变为序列(2),做相邻交换的最少次数正好是(2)的逆序数。由于该序列是环形的,所以下面的序列肯定也符合条件 (3) 4 3 2 ... 阅读全文

posted @ 2009-12-26 13:53 John Waken 阅读(567) 评论(0) 推荐(0) 编辑

2009年12月6日

MMIX机器简要介绍

摘要: 学计算机的应该听过Don Knuth的大名吧,他的七卷本著作《the Art of Computer Programming》的第四卷的草稿也出来了。Knuth大神计划在完成第五卷后重新修订一、二、三卷,届时上面的程序就不会用MIX汇编了,而是用MMIX汇编。别看仅仅是多了个M,这差别可大了,MIX和MMIX可以说是完全不同的机器,MIX设计于六十年代,当时计算机体系结构与今日大不相同,如果你看过... 阅读全文

posted @ 2009-12-06 16:36 John Waken 阅读(7053) 评论(6) 推荐(0) 编辑

2009年12月5日

自己动手写虚拟机

摘要: 这学期上了《编译原理》这门课。什么感觉呢,既机械又灵活。 前端技术理论性很强,算法固定,甚至可以使用lex,yacc这类的工具自动生成。但如果是你自己来设计一个语言,你会设计什么样的语法和语义呢,如Lisp那样简洁而强大,还是如C++那样复杂而强大呢?反正我是无从下手。 后端技术比前端复杂,不过也有很多工具可以利用,比如GCC的后端和伊利诺伊斯大学开发的LLVM,好像Google的go语言的后端用... 阅读全文

posted @ 2009-12-05 20:45 John Waken 阅读(19869) 评论(23) 推荐(1) 编辑

2009年11月21日

与二进制相关的算法

摘要: 描述: 判断一个正整数n是否是2的幂算法: int isExp2(int n) { if (n<=0) return 0; return n&(n-1)?0:1; }分析: 这个算法时间复杂度是O(1),没想到吧!我想到的算法是,将n一直除2直到n变为0,如果途中出现余数不为0则说明n不是2的幂。 这样算法时间复杂度是O(log2(n))。可谁知利用二进制二进制位运算后,立马变为O(... 阅读全文

posted @ 2009-11-21 15:26 John Waken 阅读(792) 评论(3) 推荐(0) 编辑

2009年11月8日

变长参数的实现

摘要: 我们用的最多的C函数是哪个?毫无疑问,是printf。但是你看过printf的声明式吗,那是相当诡异。随便拿一本带C库函数参考的书,可查到如下结果: int printf(const char *format, ...);那三个连续的点就代表大于或等于0个参数,再加上前面的format参数,所以printf函数至少要接受一个字符串,后面就随便了。但是这是如何实现的呢,不急,首先必须要了解C语言函数... 阅读全文

posted @ 2009-11-08 13:51 John Waken 阅读(1388) 评论(0) 推荐(0) 编辑

3. 库函数的实现

摘要: 声明: 此系列文章尚未完成,请勿转载,谢谢合作梗概这一节新增的文件有:stdarg.h 用来处理可变参数ctype.h 判断变量一些属性。比如一个字符是不是大写,是不是数字string.h string.c 常用的关于字符串的操作vsprintf.h vsprintf.c 该节的主要文件用来实现格式化输出改变的文件有:test.c 主要用来测试 printk函数正文大家上程序设计课程写的第一个程序... 阅读全文

posted @ 2009-11-08 12:24 John Waken 阅读(1836) 评论(0) 推荐(0) 编辑

2009年11月3日

an interesting little algorithm

摘要: Problem Description: Given an array with N capacity, which store N integers from 1 to N-1 with one and only one integer occurs twice, please find that repeated integer. Note, limit the time complexit... 阅读全文

posted @ 2009-11-03 22:12 John Waken 阅读(218) 评论(0) 推荐(0) 编辑

导航