15-12-02(消除类游戏)

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
}

Guess you like

Origin blog.csdn.net/qq_51985653/article/details/121587597