m、n都不大,放心for。
先记录可以消除的位置,最后统一消除
import java.util.*;
public class Main{
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int n = in.nextInt();
int m = in.nextInt();
int[][] a = new int[n][m];
int[][] b = new int[n][m];//记录、标记可以消除的位置
for(int i =0;i<n;i++) {
for(int j =0;j<m;j++) {
a[i][j] = in.nextInt();
}
}
in.close();
//以行遍历
for(int i =0;i<n;i++) {
int t = a[i][0];
int tn = 0;
for(int j =0;j<m;j++) {
if(a[i][j] == t) {
tn ++;
if(tn >= 3) {
b[i][j] = 1;
b[i][j-1] = 1;
b[i][j-2] = 1;
}
}else{
t = a[i][j];
tn = 1;
}
}
}
//以列遍历
for(int j =0;j<m;j++) {
int t = a[0][j];
int tn = 0;
for(int i =0;i<n;i++) {
if(a[i][j] == t) {
tn ++;
if(tn >= 3) {
b[i][j] = 1;
b[i-1][j] = 1;
b[i-2][j] = 1;
}
}else{
t = a[i][j];
tn = 1;
}
}
}
//消除a
for(int i =0;i<n;i++) {
for(int j =0;j<m;j++) {
if(b[i][j] == 1) {
a[i][j] = 0;
}
}
}
for(int i =0;i<n;i++) {
for(int j =0;j<m;j++) {
System.out.print(a[i][j]+" ");
} System.out.println();
}
}//main
}