201512-2 消除类游戏 Java

思路:
用二维数组,对于每一个棋子,向右看三个,向下看三个,如果相等则置为负数,最后遍历输出。

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();

	}

}

原文地址:https://www.cnblogs.com/yu-jiawei/p/12356089.html