自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

张羿的CSDN专栏

正在开发.NET Native

  • 博客(10)
  • 收藏
  • 关注

原创 ACM UVa 算法题 #202 - Repeating Decimals的解法

题目的Link:ACM UVa #202 - Repeating Decimals很简单,属于大家都可以做的题目,也就是送分题 :) 当逐步作除法的时候如果出现了重复的商,那么cycle必然在这个两个重复的商之间,道理我就不多啰嗦了,小学数学嘛一般的方法是纪录所有商,每算出一个新的便顺序查找看该商是否出现过,复杂度为O(n^2)。为了提高速度,注意到题目中限制除数和被除数代码如下:

2007-01-29 22:39:00 5713 1

原创 ACM UVa 算法题 #110 - Meta-Loopless Sort 的解法

题目的Link在这里:ACM UVa #110 - Meta-Loopless Sort这道题的关键在于生成全排列的同时也需要确定如何进行比较可以得到此种全排列。生成全排列的方法有很多,但是有一种方法最适合此题:假设我们获得了1~n的全排列,如何获得1~n+1的全排列?对于每个1~n的全排列x(1), x(2), ... x(n),可以看作该排列中有n+1个空位,即,, x(1), , x

2007-01-28 13:13:00 2606

原创 如何求最长连续公共子序列和最长连续子字符串

前段时间研究过如何求最长连续公共子序列和最长连续子字符串,以前一个同学正好问起来,这里贴出来解法:问题的关键还是如何定义子问题,假设有:Xm = x1 x2 x3 ... xmYn = y1 y2 y3 ... yn1. 最长公共子序列(不必连续)定义f(m, n)为Xm和Yn之间最长的子序列的长度于是有f(m, 0) = f(0, m) = 0如果xm != yn

2007-01-28 13:05:00 8180 8

原创 ACM UVa 算法题 #108 - Maximum Sum的解法

题目的Link在这里:ACM UVa 108 - Maximum SumUVa 507和108其实是相关的。507是可以看作是一维的Maximum Interval Sum问题,而本题则是任何一个n*m的Rectangle:a11 a12 ... a1na21 a22 ... a2n.....................am1 am2 ... amn可以看作一个一维的数组,

2007-01-27 12:06:00 5026

原创 ACM UVa 算法题 #507 - Jill Rides Again的解法

题目的Link在这里:ACM UVa 507 - Jill Rides Again本质上来说,本题是一个Maximum Interval Sum问题,也就是求最大连续序列。一般的做法需要o(n^2)的时间,其实有一个简单的O(n)复杂度的解法:从左到右逐步累加,记录每次累加之后的最大值,假如累加值直观来说,这样做把整个序列分为(A1, n1), (A2, n2)....(Am, n

2007-01-27 11:56:00 2563

原创 ACM UVa 算法题 #201 - Squares解法

题目的内容在这里:#201 - Squares解法我所能想到的有两种,先说慢一些的:1. 较慢的算法,复杂度O(N^4)我一开始想到的算法如下:对于每个点,可以从该点出发,把该点看成矩形的左上角,检查是否存在大小从1到N的矩形(当然不可以超过边界),检查是否存在这样的矩形每一次需要花上O(n)的时间(检查四条边,可以优化一些,但是复杂度必为O(n)),因此总的复杂度是O(N^4)2

2007-01-26 00:27:00 2763

原创 ACM UVa 算法题 #200 - Rare Order的解法

题目链接在这里:ACM UVa #200 - Rare Order本题的解法相对简单:对于输入的所有字符串,只需两两比较,每个字符串可以获得一个不等关系(或者无法获得),如:ZXYZXW可以知道Y 按照此种方法依次两两比较,可以获得多个不等关系。当有了不等关系之后,下一步是如何根据不等关系得到这些字符的Order。最有效的方法是拓扑排序(Topology Sort):首先对

2007-01-23 23:05:00 3743

原创 Python源码分析6 – 从CST到AST的转化

Introduction上篇文章解释了Python是如何使用PyParser生成CST的。回顾一下,Python执行代码要经过如下过程:1.     Tokenizer进行词法分析,把源程序分解为Token2.     Parser根据Token创建CST3.     CST被转换为AST4.     AST被编译为字节码5.     执行字节码当执行Python代码的

2007-01-21 00:22:00 6975 7

原创 .NET / Rotor 源码研究2 – PAL Initialization / Termination

1.     IntroductionPAL (Platform Adaptation Layer) 是Rotor得以在多种平台之间移植的关键所在。不同操作系统的API区别非常大,很难简单用#if/#else/#endif之类的语句进行条件编译来解决不同操作系统API之间互不兼容的问题,Rotor的解决方法是创建一个兼容层PAL,建立在PAL之上的程序无需关心面对的是何种操作系统,只需调用PA

2007-01-12 21:46:00 4511 1

原创 Python源码分析5 – 语法分析器PyParser

Introduction上一篇文章我们分析了Python是如何对语法文件Grammar进行预处理,生成语法数据,并在运行时生成Acclerators加速语法分析的过程。当分析完这些内容之后,下一步便是分析Python中语法分析的机制。回顾一下Python的整个处理流程:1.     PyTokenizer进行词法分析,把源程序分解为Token2.     PyParser根据Token

2007-01-06 19:56:00 7617 5

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除