• 网易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();
        }
    }
  • 相关阅读:
    C++ 修改常量的值
    Android Studio 使用入门
    Ubuntu14.04下配置固定IP
    vi/vim 按键说明
    linux下文件夹的创建、复制、剪切、重命名、清空和删除命令
    linux中的find命令——查找文件名
    shell 脚本编写基础
    linux C程序中获取shell脚本输出(如获取system命令输出)
    vi 技巧
    理解Linux中的shutdown、poweroff、halt和reboot命令
  • 原文地址:https://www.cnblogs.com/dengyt/p/7039409.html
Copyright © 2020-2023  润新知