挺简单,挨个遍历每一个点,确保不超出数组范围且满足有连续的三个或三个以上相同的数,就把另一个标记数组对应位置置1,最后与原数组相比较。
package Online_pra;
import java.util.Scanner;
public class CCF1512_2 {
public static void main(String args[]) {
Scanner scan=new Scanner(System.in);
int n=scan.nextInt();
int m=scan.nextInt();
int a[][]=new int[n][m];
for(int i=0;i<n;i++) {
for(int j=0;j<m;j++)
a[i][j]=scan.nextInt();
}
int b[][]=new int[n][m];
for(int i=0;i<n;i++) {
for(int j=0;j<m;j++) {
if(j+1<m&&j+2<m) {
if(a[i][j]==a[i][j+1]&&a[i][j]==a[i][j+2]) {
b[i][j]=1;
b[i][j+1]=1;
b[i][j+2]=1;
}
}
if(i+1<n&&i+2<n) {
if(a[i][j]==a[i+1][j]&&a[i][j]==a[i+2][j]) {
b[i][j]=1;
b[i+1][j]=1;
b[i+2][j]=1;
}
}
}
}
for(int i=0;i<n;i++) {
for(int j=0;j<m-1;j++) {
if(b[i][j]==1)
System.out.print(0+" ");
else
System.out.print(a[i][j]+" ");
}
if(b[i][m-1]==1)
System.out.print(0);
else
System.out.print(a[i][m-1]);
System.out.println();
}
}
}