62,616
社区成员
发帖
与我相关
我的任务
分享
private static boolean isMatched(int [][]data, int row, int col, int v){
for(int i=-1; i<=1; i++){
for (int j=-1; j<=1; j++){
//如果非紧挨节点,则不符合
if (Math.abs(i+j)!=1) continue;
//是否超出二维数据范围
if ((row+i)<0 || ((row+i)>=data.length) || (col+j)<0 || (col+j)>=data[row+i].length) continue;
if (data[row+i][col+j]==v){
return true;
}
}
}
return false;
}
public static void main(String[]args){
int [][] data = {{2,4,2,3,4},{3,2,2,5,7},{4,2,5,6,8},{2,2,2,2,6},{2,3,4,2,2}};
for(int i=0; i<data.length; i++){
for (int j=0; j<data[i].length; j++){
if (data[i][j]==2){
if (isMatched(data, i, j, 2)) System.out.println(String.format("%d,%d",i,j));
}
}
}
}
private static void doFunction(int[][] datas, int conditionsNum) {
int length = datas.length;
//按照上下左右的顺序判断
for (int x = 0; x < 5; x++) {
for (int y = 0; y < length; y++) {
if(datas[x][y]==conditionsNum){
System.out.println(String.format("\n********本值%d--本值坐标(%d,%d)*******", datas[x][y], x, y));
//判断上
if (x - 1 >= 0 && datas[x - 1][y] == conditionsNum ) {
System.out.println(String.format("位于本值上方 坐标 (%d,%d),值为 %d", x - 1, y, datas[x - 1][y]));
}
//判断下
if (x + 1 < length && datas[x + 1][y] == conditionsNum ) {
System.out.println(String.format("位于本值下方 坐标 (%d,%d),值为 %d", x + 1, y, datas[x + 1][y]));
}
//判断左
if (y - 1 >= 0 && datas[x][y - 1] == conditionsNum ) {
System.out.println(String.format("位于本值左方 坐标 (%d,%d),值为 %d", x, y - 1, datas[x][y - 1]));
}
//判断右
if (y + 1 < 5 && datas[x][y + 1] == conditionsNum ) {
System.out.println(String.format("位于本值右方 坐标 (%d,%d),值为 %d", x, y + 1, datas[x][y + 1]));
}
System.out.println("***********************************\n");
}
}
}
}
int conditionsNum = 2;
doFunction(datas, conditionsNum);
private static boolean findMatched(int [][]data, int row, int col, int v, Map<Integer, Object> rets){
int n = 0;
rets.clear();
for(int i=-1; i<=1; i++){
for (int j=-1; j<=1; j++){
//如果非紧挨节点,则不符合
if (Math.abs(i+j)!=1) continue;
//是否超出二维数据范围
if ((row+i)<0 || ((row+i)>=data.length) || (col+j)<0 || (col+j)>=data[row+i].length) continue;
if (data[row+i][col+j]==v){
n++;
rets.put((row+i)*5+col+j,String.format("{%d,%d}", row+i,col+j));
}
}
}
return n>=2;
}
public static void main(String[]args){
int [][] data = {{2,4,2,3,4},{3,3,2,5,7},{4,2,5,6,8},{2,2,2,2,6},{2,3,4,2,2}};
Map<Integer, Object> rets = new HashMap<Integer, Object>();
Map<Integer, Object> tmp = new HashMap<Integer, Object>();
for(int i=0; i<data.length; i++){
for (int j=0; j<data[i].length; j++){
if (data[i][j]==2){
if (findMatched(data, i, j, 2, tmp)){
for (Integer in : tmp.keySet()) rets.put(in, tmp.get(in));
}
}
}
}
for (Integer in : rets.keySet()) System.out.println(in+"=>"+rets.get(in));
}