思路:
用二维数组,对于每一个棋子,向右看三个,向下看三个,如果相等则置为负数,最后遍历输出。
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
int n,m;
n=sc.nextInt();
m=sc.nextInt();
int[][] a=new int[n][m];
for(int i=0;i<n;i++)
for(int j=0;j<m;j++)
a[i][j]=sc.nextInt();
//行标记
for(int i=0;i<n;i++)
for(int j=0;j<m-2;j++)
if(Math.abs(a[i][j])==Math.abs(a[i][j+1])&&Math.abs(a[i][j+1])==Math.abs(a[i][j+2])) {
if(a[i][j]>0) a[i][j]*=-1;//相当于一个标记,所以在上面判断的时候才用绝对值
if(a[i][j+1]>0) a[i][j+1]*=-1;
if(a[i][j+2]>0) a[i][j+2]*=-1;
}
//列标记
for(int j=0;j<m;j++)
for(int i=0;i<n-2;i++)
if(Math.abs(a[i][j])==Math.abs(a[i+1][j])&&Math.abs(a[i+1][j])==Math.abs(a[i+2][j])) {
if(a[i][j]>0) a[i][j]*=-1;
if(a[i+1][j]>0) a[i+1][j]*=-1;
if(a[i+2][j]>0) a[i+2][j]*=-1;
}
//输出
for(int i=0;i<n;i++) {
for(int j=0;j<m;j++) {
if(j!=0)
System.out.print(" ");
if(a[i][j]<0)
System.out.print(0);
else
System.out.print(a[i][j]);
}
System.out.println();
}
sc.close();
}
}