最大子序列和

算法方面一直是弱项,一直没有去锻炼过。今天看到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。
 
贴一张图(来自网络)来帮助理解字符轮廓:
 
 

继续阅读