用递归方法计算邻近的单元的数目

来源:百度知道 编辑:UC知道 时间:2024/06/20 19:04:00
在一个分布有正常与不正常的网格中,用递归方法求这个网格中任意给定的的一个单元的邻近,有多少个不正常的单元。除去特别位置即四个端点和四条边上外,一般情况下,一个单元有八个方向:左上方,正上方,右上方,左边,右边,左下方,正下方,右下方。以某个不正常单元为中心,在它的八个方向上找一遍,若它的任一个方向上的的单元是不正常的单元,那么就继续以该不正常单元为中心重复前个过程直到将所有的邻近不正常的单元找出。最后返回所找到的不正常的单元数目。
你有邮箱吗?我把我的实现给你,你做的和我已经做的不兼容。。。

//你没给格数据怎么表达了,我只能用接口表示你的网格了。
import java.util.Vector;
public interface Diagnosable{
boolean isBad();
}
public Class Diagnostor{
private Diagnosable[][] grids;
public Diagnostor(Diagnosable[][] grids){
this.grids=grids;
}
public Diagnosable[] findBadGrids(int row,int col){
Vector<Diagnosable>badGrids=new Vector<Diagnosable>();
boolean[][] visited=new boolean[grids.length][grids[0].length];
findBads(row,col,badGrids,visited);
return badGrids.toArray(new Diagnosable[0]);
}
private void findBads(int r,int c,Vector<Diagnosable>badGrids,boolean[][] visited){
visited[r][c]=true;
if(grids[r][c].isBad()){
badGrids.add(grids[r][c]);
int r1=r>0?r-1:r,c1=c>0?c-1:c,r2=r<grids.length-1?r+1:r,c2=c<grids[0].length-1?c+1:c;
for(r=r1;r<=r2;r++){