zoukankan      html  css  js  c++  java
  • 网易2017春招笔试真题编程题集合(9)——涂棋盘

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

    输入描述:
    输入数据包括n+1行:
    第一行为一个整数n(1 ≤ n ≤ 50),即棋盘的大小
    接下来的n行每行一个字符串表示第i行棋盘的颜色,'W'表示白色,'B'表示黑色
    输出描述:
    输出小易会涂画的区域大小
    输入例子:
    3
    BWW
    BBB
    BWB
    输出例子:
    3

    参考别人的代码,思路很简单:直接用数组按行获取棋盘的值,每一个数组元素就是一行数据,用两个for循环按列来比较元素是否相等。求各数组相同字符子串的最大长度即可。

    代码:
    import java.util.*;
    public class Main {
        public static void main(String[] args) {
            Scanner sc=new Scanner(System.in);
            while(sc.hasNext()){
                int n=sc.nextInt();
                String[] str=new String[n];
                for(int i=0;i<n;i++){
                    str[i]=sc.next();
                    //因为获取上一个输入用的nextInt,光标还在上一行,所以这里不能用nextLine
                }
                int count=0;
                for(int i=0;i<n;i++){
                    int c=1;
                    for(int j=0;j<n-1;j++){
                        if(str[j].charAt(i)==str[j+1].charAt(i)){
                            //按列方向来进行,而不是一个数组元素横向
                            c++;
                            count=Math.max(count, c);
                        }else{
                            c=1;
                        }
                    }
                }
                System.out.println(count);
            }
            sc.close();
        }
    }
  • 相关阅读:
    团队冲刺第五天
    团队冲刺第四天
    学习进度条---第八周
    团队冲刺第三天
    团队冲刺第二天
    团队冲刺第一天
    学习进度条--第七周
    课堂练习--第7周(两人结对)
    学习进度条--第六周
    第一次 在Java课上的编程
  • 原文地址:https://www.cnblogs.com/dengyt/p/7039409.html
Copyright © 2011-2022 走看看