摘要: 注意: COOL编译器实现是一门网络公开课,地址是https://class.coursera.org/compilers/class/index,可能要FQ可以在里面找到所需要的开发环境(虚拟机镜像等)和相关的资料说明.如果你感兴趣,可以一同学习和讨论.1. 作业目标实现parser,给了两个工具,parser生成器--Bison和操作树结构的包parser的输出是一个abstract syntax tree(AST),我们需要做的是结合AST构造的API,再使用Bison中的semantic actions来构建这个AST。2. 参考资料a. Cool语言的语法结构,在The Cool R 阅读全文
posted @ 2012-08-21 09:51 btchenguang 阅读(1929) 评论(0) 推荐(0) 编辑
摘要: 问题描述: 随机给出一串数i, 要能够给出其中大小中间的那个数 算法描述: 一般做法,做插入排序,然后中间值在索引一半的位置,时间复杂度一般,插入排序平均时间复杂度O(n2),再找中间 值,效率不高。 这里的做法是,引入数据结构--Heap来解决问题,时间复杂度为O(logn)。 引入两个堆,max heap和 min heap来存放整数串i的两个部分,需要满足如下条... 阅读全文
posted @ 2012-05-06 10:31 btchenguang 阅读(1216) 评论(0) 推荐(0) 编辑
摘要: 有问题,调试了很久也没有发现错在哪里。。。高手们,请指教源码附件:http://files.cnblogs.com/btchenguang/scc.zip概念:有向图中的强连通指的是可以相互访问到的顶点的集合,简而言之是组成环的顶点的集合,在一个有向图中可能有很多个不同的强连通部分算法思想:1. Let G be a directed graph and S be an empty stack.2. While S does not contain all vertices Choose an arbitrary vertex v not in S. Perform a depth-first 阅读全文
posted @ 2012-04-26 16:05 btchenguang 阅读(456) 评论(0) 推荐(0) 编辑
摘要: Metaprogramming是ruby的一个特性,可以动态的修改语言结构,比如类结构,模块结构和实例变量信息等等。 甚至可以在运行时往程序中加入并运行新的代码而不需要重启你的程序。 1. 本篇中先简单了解attr_accessor, attr_reader和attr_writer的用法 class Person #可带多个参数,用来自动生成参数的getter和setter方法 attr... 阅读全文
posted @ 2012-03-02 23:30 btchenguang 阅读(1189) 评论(0) 推荐(0) 编辑
摘要: 想了解一下python的性能调试方法,结果就看到这一篇文章,想翻译下来作个记录 原文来自于:http://docs.python.org/library/profile.html?highlight=profile#cProfile 1. 介绍性能分析器 profiler是一个程序,用来描述运行时的程序性能,并且从不同方面提供统计数据加以表述。Python中含有3个模块提供这样的功能,分别是... 阅读全文
posted @ 2012-02-03 15:03 btchenguang 阅读(22314) 评论(0) 推荐(1) 编辑
摘要: 需要在程序中使用二维数组,网上找到一种这样的用法: #创建一个宽度为3,高度为4的数组#[[0,0,0], # [0,0,0],# [0,0,0],# [0,0,0]]myList = [[0] * 3] * 4但是当操作myList[0][1] = 1时,发现整个第二列都被赋值,变成[[0,1,0], [0,1,0], [0,1,0], [0,1,0]] 为什么...一时搞不懂,后面翻阅The... 阅读全文
posted @ 2012-01-30 22:38 btchenguang 阅读(365606) 评论(11) 推荐(11) 编辑
摘要: 突然觉得C盘快不行了,试了很久,终于网上查到的方法,挺好用的,特此记录下来Win7自带的一个小工具:mklink(用于创建符号链接)itunes的备份目录为:C:\Users\hanks\AppData\Roaming\Apple Computer\MobileSync\Backup,大小有几个G,而且每次备份一次,还会慢慢增大,对于本身没有分多少空间给C盘来说比较痛苦。。。使用方法:首先右键选择“以管理员运行”附件中的命令提示符剪切上面路径中的Backup文件夹(注意是剪切,不是复制)到你自己的其它盘,比如E:\myItunes,得到E:\myItunes\Backup在命令提示窗口中输入: 阅读全文
posted @ 2012-01-20 21:50 btchenguang 阅读(2999) 评论(0) 推荐(0) 编辑
摘要: DP问题的特征:重复子问题存在最优子集背包问题属于经典的DP问题,而0/1背包问题是属于最简单的情况。0/1的意思是每种物品只有一件,要么放入背包中,要么不放问题定义:有N个物品,要放入容量为W的背包中,第i件物品重量为w(i),价值为v(i),问要怎样放才能在不超过背包容量的基础上,获得最大的价值。算法描述:需要用到递归的思想,定义A(i, j)为前i个物品中在容量为j的情况下所能达到的最大价值,则A(0,j) = 0,A(i,0) = 0(i <= N and j <= W).如果w(i) > j时,说明第i件物品不能放入背包中,价值不变,所以A(i, j) = A(i 阅读全文
posted @ 2012-01-18 14:40 btchenguang 阅读(466) 评论(0) 推荐(0) 编辑
摘要: 1. 需要把example.py文件所在的文件夹路径添加到系统path环境变量中2. 在调用的时候>>>import example>>>example.function()python编译器首先是在当前路径(python.exe所在文件夹)下寻找文件,然后再去path定义的路径中寻找文件 阅读全文
posted @ 2012-01-18 13:58 btchenguang 阅读(2493) 评论(0) 推荐(0) 编辑