这一题一定要用到辅助数组,能想到这个完成这一题就不太难了。
注意:在提交代码的时候,一定要将中文删除掉。
-
题目描述
-
Java 题解
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt();
int m = scanner.nextInt();
int[][] arr = new int[n][m];
//多定义一个数组,进行数据处理
byte[][] flag = new byte[n][m];
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
arr[i][j] = scanner.nextInt();
}
}
scanner.close();
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
//处理一行的数据
//这个判断是关键
if (j+1<m && j+2<m) {
if ((arr[i][j] == arr[i][j+1]) && (arr[i][j] == arr[i][j+2])) {
//这里一定要用第二个数组来接受处理标志。不能直接破坏原数组数据。
flag[i][j]=1;
flag[i][j+1] = 1;
flag[i][j+2] = 1;
}
}
//处理一列的数据
if (i+1 < n && i+2 <n) {
if ((arr[i][j] == arr[i+1][j]) && (arr[i][j] == arr[i+2][j])) {
flag[i][j] = 1;
flag[i+1][j] = 1;
flag[i+2][j] = 1;
}
}
}
}
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
//处理愿数组标志位对应的数据
if (flag[i][j] == 1) {
arr[i][j] = 0;
}
System.out.print(arr[i][j] + " ");
}
System.out.println();
}
}
}
好啦,祝大家学习、工作顺利!