

Java代码:
class A{
int x;
int y;
A(int x,int y){
this.x=x;
this.y=y;
}
public int hashCode() {
int result = 17;
result = 37 * result + x;
result = 37 * result +y;
return result;
}
public boolean equals(Object o){
return o instanceof A && (x == ((A)o).x)&&(y==((A)o).y);
}
}
public class TestA {
static void find_connected(int[][]array,int n,int x,int y){
if(x<0||y<0||x>=n||y>=n) return;
int data=array[x][y];
A tmp=new A(x,y);
Queue<A> q=new LinkedList<>();
ArrayList<A>list=new ArrayList<A>();
int flag[][]=new int[n][n];
flag[x][y]=1;
q.offer(tmp);
while(q.size()!=0){
tmp=q.poll();
list.add(tmp);
x=tmp.x;
y=tmp.y;
if(x-1>=0 && flag[x-1][y]==0 && array[x-1][y]==data) {q.offer(new A(x-1,y));flag[x-1][y]=1;}
if(y-1>=0 && flag[x][y-1]==0 && array[x][y-1]==data) {q.offer(new A(x,y-1));flag[x][y-1]=1;}
if(x+1<n && flag[x+1][y]==0 && array[x+1][y]==data) {q.offer(new A(x+1,y));flag[x+1][y]=1;}
if(y+1<n && flag[x][y+1]==0 && array[x][y+1]==data) {q.offer(new A(x,y+1));flag[x][y+1]=1;}
}
for(int i=0;i<list.size();i++){
tmp=list.get(i);
if(i!=list.size()-1)
System.out.print("("+tmp.x+","+tmp.y+")"+",");
else
System.out.print("("+tmp.x+","+tmp.y+")");
}
}
public static void main(String[] args) {
int array[][]={
{13,67,6,3,11},
{13,13,5,11,8},
{10,10,10,41,41},
{2,2,10,10,33},
{13,10,13,22,34}
};
find_connected(array,5,2,1);
}
}