第九届蓝桥杯大赛个人赛省赛(软件类)Java类 真题 第五题 标题:全球变暖

2021-04-27 09:31:23 浏览数 (1)

问题描述 

标题:全球变暖 你有一张某海域NxN像素的照片,"."表示海洋、"#"表示陆地,如下所示: ....... .##.... .##.... ....##. ..####. ...###. ....... 其中"上下左右"四个方向上连在一起的一片陆地组成一座岛屿。例如上图就有2座岛屿。   由于全球变暖导致了海面上升,科学家预测未来几十年,岛屿边缘一个像素的范围会被海水淹没。具体来说如果一块陆地像素与海洋相邻(上下左右四个相邻像素中有海洋),它就会被淹没。   例如上图中的海域未来会变成如下样子: ....... ....... ....... ....... ....#.. ....... ....... 请你计算:依照科学家的预测,照片中有多少岛屿会被完全淹没。   【输入格式】 第一行包含一个整数N。  (1 <= N <= 1000)   以下N行N列代表一张海域照片。   照片保证第1行、第1列、第N行、第N列的像素都是海洋。   【输出格式】 一个整数表示答案。 【输入样例】 7  ....... .##.... .##.... ....##. ..####. ...###. .......   【输出样例】 1   资源约定: 峰值内存消耗(含虚拟机) < 256M CPU消耗  < 1000ms 请严格按要求输出,不要画蛇添足地打印类似:“请您输入...” 的多余内容。 所有代码放在同一个源文件中,调试通过后,拷贝提交该源码。 不要使用package语句。不要使用jdk1.7及以上版本的特性。 主类的名字必须是:Main,否则按无效代码处理。

代码实现

代码语言:javascript复制
package com.wzxy.test;

import java.util.Scanner;
/*
 * 标题:全球变暖
 */
public class Main {
	
	static Scanner sc = new Scanner(System.in);
	static int N = sc.nextInt();
	static String s[]  = new String[N]; 
	static char c[][] = new char[N][N];
	static char copy[][] = new char[N][N];
	static boolean bool1[][] = new boolean[N][N];
	static boolean bool2[][] = new boolean[N][N];
	static int count = 0;
	static int remain = 0;
	static int sum = 0;
	
	public static void main(String[] args) {
		input();
		f1();
		f2();
		f3();
//		System.out.println("    一共有  " count "  个岛屿");	//一共有count个岛屿
//		System.out.println("被淹没了  " (sum=count-remain) "  个岛屿");//被淹没了sum个岛屿
//		System.out.println("       剩余   " remain "  个岛屿");	//剩余remain
		output();
		System.out.println(sum = count - remain); // 被淹没了sum个岛屿
	}
	public static void input() {
		for(int i=0;i char[][] 一维字符串数组转换为二维字符数组 
		for(int i=0;i copy[][] 将字符数组c[][]复制到copy[][]中
		System.arraycopy(c, 0, copy, 0, N);
//		copy = c.clone();
//		copy = Arrays.copyOf(c, N);
//		copy = Arrays.copyOfRange(c, 0, N);
	}
	public static void f1() {
		//计算这片海域一共有几个岛屿
		for(int i=1;i

运行结果

0 人点赞