zoukankan      html  css  js  c++  java
  • Java实现第九届蓝桥杯全球变暖

    全球变暖
    题目描述
    你有一张某海域NxN像素的照片,"."表示海洋、"#"表示陆地,如下所示:
    
    .......
    .##....
    .##....
    ....##.
    ..####.
    ...###.
    .......
    
    其中"上下左右"四个方向上连在一起的一片陆地组成一座岛屿。例如上图就有2座岛屿。  
    
    由于全球变暖导致了海面上升,科学家预测未来几十年,岛屿边缘一个像素的范围会被海水淹没。具体来说如果一块陆地像素与海洋相邻(上下左右四个相邻像素中有海洋),它就会被淹没。  
    
    例如上图中的海域未来会变成如下样子:
    
    .......
    .......
    .......
    .......
    ....#..
    .......
    .......
    
    请你计算:依照科学家的预测,照片中有多少岛屿会被完全淹没。  
    
    【输入格式】
    第一行包含一个整数N。  (1 <= N <= 1000)  
    以下N行N列代表一张海域照片。  
    
    照片保证第1行、第1列、第N行、第N列的像素都是海洋。  
    
    【输出格式】
    一个整数表示答案。
    
    【输入样例】
    7 
    .......
    .##....
    .##....
    ....##.
    ..####.
    ...###.
    .......  
    
    【输出样例】
    1  
    
    资源约定:
    峰值内存消耗(含虚拟机) < 256M
    CPU消耗  < 1000ms
    
    
    请严格按要求输出,不要画蛇添足地打印类似:“请您输入...” 的多余内容。
    
    所有代码放在同一个源文件中,调试通过后,拷贝提交该源码。
    不要使用package语句。不要使用jdk1.7及以上版本的特性。
    主类的名字必须是:Main,否则按无效代码处理。
    
    
    import java.util.Scanner;
    /**
     * 2018蓝桥杯Java B组 全球变暖问题:
     * 条件:
     .代表海洋像素,#代表像素,相连的一块#代表岛屿,如果陆地像素左右上下某个方向有海洋便会被淹没成海洋
    
     输入:
     7
     .......
     .##.....
     .##.....
     ...##..
     ..###...
     ...##..
     .......
    
    输出:
     .......
     .......
     .......
     .......
     ...#...
     .......
     .......
     * Created by XQM on 2018/4/2.
     */
    public class Main{
        public static void main(String[] args){
            Scanner sc = new Scanner(System.in);
            int n = sc.nextInt();//输入n构成n*n二维数组
            String[] s = new String[n];
            char[] c;
            char[][] a = new char[n][n];//存储输入的字符
            char[][] b = new char[n][n];//存储输出的字符
    
            //输入
            for (int i = 0;i < n;i++){
                s[i] = sc.next();
                c = s[i].toCharArray();
                for (int j = 0; j < n;j++){
                    a[i][j] = c[j];
                    b[i][j] = c[j];
                }
            }
    
            char temp;
            //题目的要求是第一行、第一列、最后一行、最后一列都是.
            for (int i = 0;i < n;i++){
                for (int j = 0; j < n;j++){
                    if (i != 0 && i != 6 && j != 0 && j != 6){
                        temp = a[i][j];
                        if (temp == '#'){
                            if ((temp != a[i][j-1]) || (temp != a[i-1][j]) || (temp != a[i][j+1]) || (temp != a[i+1][j])){
                                b[i][j] = '.';
                            }
                        }
                    }else {
                        b[i][j] = '.';
                    }
                }
    
            }
    
            //输出
            for (int i = 0;i < n;i++){
                for (int j = 0; j < n;j++){
                    System.out.print(b[i][j]);
                }
                System.out.println();
            }
        }
    }
    
    
  • 相关阅读:
    马拉车算法【Manachar】
    AcWing算法进阶课 基础算法 启发式合并
    iframe嵌套跨域子页面变化高度自适应
    js数组中的每一项异步请求
    利用geo3d地图数据画地图上面的柱子
    地图上面加柱状图组
    antd-select选项位置偏移问题解决
    git
    React
    前端面试题
  • 原文地址:https://www.cnblogs.com/a1439775520/p/12947715.html
Copyright © 2011-2022 走看看