dev c++编译通过
#include<stdio.h>
#define true 1
#define false 0
#define maxsize 10
typedef int status;
void change(int g[][maxsize],int m, int n, int i, int j, int newcolor)
{//mn分别为g数组的行数和列数,ij为定位点的行坐标和列坐标
int oldcolor = g[i][j];
g[i][j] = newcolor;
if(i>1 && i<m || j>1 && j<n)
{
if(g[i-1][j] == oldcolor) //(i,j)上方
change(g,m,n, i-1, j, newcolor);
if(g[i+1][j] == oldcolor) //(i,j)下方
change(g,m,n, i+1, j, newcolor);
if(g[i][j-1] == oldcolor) //(i,j)左方
change(g,m,n, i, j-1, newcolor);
if(g[i][j+1] == oldcolor) //(i,j)右方
change(g,m,n, i, j+1, newcolor);
}
else return;
}
void print(int g[][maxsize], int m, int n)
{
for(int i=1; i<=m; i++)
for(int k=1; k<=n; k++)
printf("g[%d][%d]%d\n", i, k, g[i][k]);
}
int main()
{
int m, n;
printf("请输入m和n的值:");
scanf("%d%d", &m, &n);
int g[maxsize][maxsize]; //数组起始下标为(1,1)
int x;
//以行优先的方式填充数组
printf("请输入数组的各项元素值:");
for(int i=1; i<=m; i++)
for(int k=1; k<=n; k++)
scanf("%d", &g[i][k]);
change(g,m,n,2, 3, 4);
print(g, m, n);
return 0;
}