種子填充算法

問題描述:

在多邊形區域內部填充某元素。算法

基礎算法

種子算法,即從內部某一點開始填充,再遞歸填充周圍的點(上下左右——四連通)。直到遇到邊界。性能

算法僞代碼

void tianchong(int x,int y,int color){
    if point(x,y) out of the Boundary
    then return
    else{
        point(x,y).setcolor(color);
        tianchong(x,y+1,color);
        tianchong(x,y-1,color);
        tianchong(x-1,y,color);
        tianchong(x+1,y,color);
        }
}

算法性能分析

在實際應用中,出現了遞歸調用棧溢出的狀況,先在這裏留坑,下次再補上具體的數據吧。ui

算法改進

基礎算法在實際應用中,除了上面所說的當填充面積過大時,出現棧溢出的錯誤外,還會出現重複填充,很大程度上影響效率。一種改進思路就是,創建一個存放每條連續掃描線的最右端點的堆棧。在這篇論文中有具體的僞代碼實現掃描線種子填充算法的改進url

小結

這個算法算是遞歸思想的一種應用,其性能天然也是和遞歸密切相關。分析這一塊還沒細想。留坑待填。.net

相關文章
相關標籤/搜索