最大子序列和
算法方面一直是弱项,一直没有去锻炼过。今天看到is-Programmer上有人说到子序列和,也回顾了一下。用lua实现了复杂度为O(n)的动态规划法求最大序列和算法,支持全负序列。没啥技术含量,权当练习lua和熟悉算法了。
上代码:
ta = {1,-2,-3,5,2,-5,7,2,-1,2,-2} function asm(t) local maxn,currn=t[1],1 local left,right=1,1 for i=1,#t do currn = currn+t[i] if currn > maxn then maxn = currn right = i else if currn < 0 then currn = 0 left = i + 1 end end end print(maxn,unpack(t,left,right)) end -- 输出结果: Lua 5.1.4 Copyright (C) 1994-2008 Lua.org, PUC-Rio > 12 5 2 -5 7 2 -1 2
mygui中使用gdi字体
现在很多网络游戏里都使用了FreeType来显示中文字体,它可以实现很绚丽的字体效果。但是有个缺点就是加载太慢了。尤其是mygui里使用FreeType慢的让我无法接受,故打算将其字体支持增加gdi字体,以便备用吧。
程序参考了微妙的平衡(这小子最近消失了)早期的代码,hge的gdi字体。其实这种方法不光是能用于mygui,几乎dx平台下面都能用。这方面的资料也挺多的了,主要是利用一个api,GetGlyphOutline。大致说一下,该函数取得被选进指定设备环境的TrueType字体的字符轮廓或位图。这个函数的具体说明不在此粘贴,可以自己Google。
贴一张图(来自网络)来帮助理解字符轮廓: