/**********
【题目】假设以二维数组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 =====
相关推荐
一维数组转二维数组
用C++语音实现一维数组二维数组写入txt,从txt中读取数据存到一维数组、二维数组,数组用指针表示
C# json 一维数组 和 二维数组的转换 写的非常详细,对大家有帮助
// 二维数组冒泡排序 public static void main(String[] args) { int i=0, j=0, temp = 0; int[][] nums1 = { { 34, 1, 22, 5 }, { 28, 98, 15, 32 }, { 33, -5, 17, 41 } }; int rows = nums1.length; //二维...
将labview内二维数组方便的转化为一维数组使用
CStringArray二维数组CStringArray二维数组CStringArray二维数组CStringArray二维数组CStringArray二维数组CStringArray二维数组CStringArray二维数组CStringArray二维数组
VB.NET二维数组快速排序(更新) 'OldArrays(),为排序二维数组;NewArrays(),为存放结果数组,SortColumnsOrOrders(),传递排序参数数组,偶数个为排序列号,奇数为升降序,0为升序,1为降序;FieldRow,是否有字段行...
通过vue解析表头合并的表格,后台返回的数据格式为[{name:aa,list:[{value:100}]}] 通过table与v-for组合循环数据达到目的。 vue 表头合并数据解析 vue 二维数组解析 vue 二维list解析 vue table+v-for
介绍了数组、一维数组、二维数组、多维数组及其应用示例
二维数组的声明和使用ppt介绍很快可以上手练习和理解用的
C语言程序设计-求出二维数组周边元素之和,作为函数值返回;二维数组的值在主函数中赋予;
用二维数组实现二维矩阵的加法和乘法 #include #define SIZE 4 void addMatrix(int [ ][SIZE], int [ ][SIZE], int [ ][SIZE]); void mulMatrix(int [ ][SIZE], int [ ][SIZE], int [ ][SIZE]); void ...
实现一个“可变长二维数组”,这个二维数组的行数可由输入决定,每行的元素个数仍可由输入决定。每个数组元素值都是1. 执行结果如下: 请输入行数: 5 请输入第1行的元素个数: 20 请输入第2行的元素个数: 34 请...
labview 删除二维数组全空行
c#调用c++DLL,DLL里是二维数组 ,c#里如何调用二维数组
使用Excel两个一维数组构造二维数组.rar,本例所示的Sheet1工作表已经定义了两个一维数组,利用公式对这连个数组进行加法运算,可以生成一个新的二维数组。
autoit 解决二维数组动态赋值
在c++中,经常调用函数,而子函数经常要返回的值是数组,无论一维数组还是二维数组都需要运用到指针的知识。一维数组不再过多叙述,给了一个实例如何返回二维数组,希望对大家有帮助(主要用到指针的知识,看不懂的...
labview读取二维数组中所有数据,涉及到labview中数组VI的熟练使用。
用 for 循环产生 4 行 100 列二维数组,数组成员如下: 1,2,3………100 100,99,98………..1 6,7,8………….105 105,104,103………6 从这个数组中提取出 2 行 50 列的二维数组,成员如下: 50,49,48……...