`
奔跑的Lueny
  • 浏览: 2482 次
  • 性别: Icon_minigender_1
  • 来自: 广州
最近访客 更多访客>>
社区版块
存档分类
最新评论

二维数组图象染色问题

阅读更多

/**********

【题目】假设以二维数组g[1..m][1..n]表示一个图像

区域,g[i][j]表示该区域中点(i,j)所具颜色,其值

为从0到k的整数。试编写递归算法,将点(i0,j0)所在

区域的颜色置换为颜色c。约定与(i0,j0)同色的上、

下、左、右的邻接点为同色区域的点。

 

表示图像区域的类型定义如下:

typedef char GTYPE[m+1][n+1];

**********/

 

void ChangeColor(GTYPE g, int m, int n, 

                 char c, int i0, int j0)

    if(i0>m||j0>n||j0<1||i0<1) return;  //判断是否越界

    char color;

    color = g[i0][j0];

    g[i0][j0] = c; 

    if(i0+1<=m)  {

        if(g[i0+1][j0]==color)

            ChangeColor(g,m,n,c,i0+1,j0);

    }

    if(i0-1>=1)  {

        if(g[i0-1][j0]==color)

            ChangeColor(g,m,n,c,i0-1,j0);

    }

    if(j0+1<=n)  {

        if(g[i0][j0+1]==color)

            ChangeColor(g,m,n,c,i0,j0+1);

    }

    if(j0-1>=1)  {

        if(g[i0][j0-1]==color)

            ChangeColor(g,m,n,c,i0,j0-1);

    }

}

 

 

 

用anyview编译运行:

<第1次运行>  2015/5/8 22:23:19

    g[7][4] = 3 ==> 8

A$:  311323322221223  311328822221223

A$:  031233131103233  031288131103233

A$:  300232122213303  300282122213303

A$:  302331220110123  302881220110123

A$:  000333121220203  000888121220203

A$:  132333011003223  132888011003223

A$:  310303331222111  310808881222111

A$:  210223032021013  210228082021013

A$:  013130100302012  013130100302012

 

E$:  311323322221223  311328822221223

E$:  031233131103233  031288131103233

E$:  300232122213303  300282122213303

E$:  302331220110123  302881220110123

E$:  000333121220203  000888121220203

E$:  132333011003223  132888011003223

E$:  310303331222111  310808881222111

E$:  210223032021013  210228082021013

E$:  013130100302012  013130100302012

===== Right =====

 

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics