天天看点

[网易编程题] 涂棋盘

小易有一块n*n的棋盘,棋盘的每一个格子都为黑色或者白色,小易现在要用他喜欢的红色去涂画棋盘。小易会找出棋盘中某一列中拥有相同颜色的最大的区域去涂画,帮助小易算算他会涂画多少个棋格。

输入描述:

输入数据包括n+1行:

第一行为一个整数n(1 ≤ n ≤ 50),即棋盘的大小

接下来的n行每行一个字符串表示第i行棋盘的颜色,’W’表示白色,’B’表示黑色

输出描述:

输出小易会涂画的区域大小

输入例子1:

3

BWW

BBB

BWB

输出例子1:

3

解题思路

遍历棋盘的每一列,寻找最长连续串。

import java.util.Scanner;

public class Main {

    private static int fun(int[][] data) {

        int max = ;
        for (int i = ; i < data[].length; i++) {

            int num = data[][i];
            int count = ;
            for (int j = ; j < data.length; j++) {
                if (num == data[j][i]) {
                    count++;
                    if (count > max)
                        max = count;
                } else {
                    num = data[j][i];
                    count = ;
                }
            }

        }

        return max;

    }

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);

        int n = sc.nextInt();
        sc.nextLine();

        int[][] data = new int[n][n];
        for (int i = ; i < n; i++) {
            String string = sc.nextLine();
            for (int j = ; j < n; j++) {
                if (string.charAt(j) == 'B') {
                    data[i][j] = ;
                } else {
                    data[i][j] = ;
                }
            }
        }
        System.out.println(fun(data));
    }
}
           

继续阅读