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();
            }
        }
    }
    
    
  • 相关阅读:
    FJNU 1151 Fat Brother And Geometry(胖哥与几何)
    FJNU 1157 Fat Brother’s ruozhi magic(胖哥的弱智术)
    FJNU 1159 Fat Brother’s new way(胖哥的新姿势)
    HDU 3549 Flow Problem(最大流)
    HDU 1005 Number Sequence(数列)
    Tickets(基础DP)
    免费馅饼(基础DP)
    Super Jumping! Jumping! Jumping!(基础DP)
    Ignatius and the Princess IV(基础DP)
    Keywords Search(AC自动机)
  • 原文地址:https://www.cnblogs.com/a1439775520/p/13077656.html
Copyright © 2011-2022 走看看