首页 > 代码库 > 【HackerRank】 有洞的地图
【HackerRank】 有洞的地图
给你一个n*n的地图。地图中的每个格子有一个值表示该地区的深度。我们称一个地图中的一个格子为空洞,当且仅当该格子不在地图边缘并且每个和它相邻的格子都具有比它更小的深度。两个格子称为相邻如果它们共有一条边。
你要找到地图中所有的空洞,并且用X
描述。
输入格式
第一行包含一个整数n,表示地图的规模。 接下来n行中每行包含n个无空白的正数字。每个数字(1-9)表示对应区域的深度。
输出格式
输出n行,表示最终的地图结果。每个空洞要用字符X
替换。
约束条件
1<=n<=100
1≤n≤100
题解:简单的模拟。
题解:
1 import java.io.*; 2 import java.util.*; 3 import java.text.*; 4 import java.math.*; 5 import java.util.regex.*; 6 7 public class Solution { 8 public static void main(String[] args) { 9 Scanner in = new Scanner(System.in);10 int n = in.nextInt();11 int[][] ar = new int[n][n];12 for(int i = 0;i < n;i++){13 String temp = in.next();14 for(int j = 0;j < n;j++)15 ar[i][j] = temp.charAt(j) - ‘0‘; 16 }17 18 for(int i = 0;i < n;i++){19 StringBuffer sb = new StringBuffer();20 for(int j = 0;j < n;j++){21 boolean isHole = true;22 //up23 if(i-1<0||i+1>=n||j-1<0||j+1>=n)24 isHole = false;25 else{26 if(ar[i-1][j] >= ar[i][j])27 isHole = false;28 if(ar[i+1][j] >= ar[i][j])29 isHole = false;30 if(ar[i][j-1] >= ar[i][j])31 isHole = false;32 if(ar[i][j+1] >= ar[i][j])33 isHole = false;34 }35 36 if(isHole)37 sb.append(‘X‘);38 else {39 sb.append(ar[i][j]); 40 }41 }42 System.out.println(sb.toString());43 }44 }45 }
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。