Java算法——识别网格内不同落区
private void selectPoint(short[][] shorts,Integer yIndex,Integer xIndex,Map<String,Point> points,Integer state){
//左上
int yLeftTop=yIndex-1;int xLeftTop=xIndex-1;
if ((yLeftTop>=0 && yLeftTop<=shorts.length-1) && (xLeftTop>=0 && xLeftTop<=shorts[0].length-1)){
if (shorts[yLeftTop][xLeftTop]==1){
Set<String> keySet = points.keySet();
if (!keySet.contains(yLeftTop+"-"+xLeftTop)){
Point point = new Point(yLeftTop,xLeftTop,state);
points.put(yLeftTop+"-"+xLeftTop,point);
selectPoint(shorts,yLeftTop,xLeftTop,points,state);
}
}
}
//上
int yTop=yIndex-1;int xTop=xIndex;
if ((yTop>=0 && yTop<=shorts.length-1) && (xTop>=0 && xTop<=shorts[0].length-1)){
if (shorts[yTop][xTop]==1){
Set<String> keySet = points.keySet();
if (!keySet.contains(yTop+"-"+xTop)) {
Point point = new Point(yTop, xTop, state);
points.put(yTop + "-" + xTop, point);
selectPoint(shorts,yTop,xTop,points,state);
}
}
}
//以上部分代码
}
@Data
@AllArgsConstructor
@NoArgsConstructor
@ToString
private static class Point{
private Integer yIndex;//y坐标
private Integer xIndex;//x坐标
private Integer state; //状态
}