【Mc生存】插火把 Java入门

【Mc生存】插火把 Java入门话说有一天 linyorson 在 我的世界 开了一个 n nn n 的方阵 现在他有 mm 个火把和 kk 个萤石 分别放在 x1 y1 xm ym x1 y1 xm ym 和 o1 p1

大家好,欢迎来到IT知识分享网。

题目描述

话说有一天 linyorson 在“我的世界”开了一个 n×n 的方阵,现在他有 mm个火把和 k 个萤石,分别放在 (x1,y1)∼(xm,ym) 和 (o1,p1)∼(ok,pk) 的位置,没有光并且没放东西的地方会生成怪物。请问在这个方阵中有几个点会生成怪物?

P.S. 火把的照亮范围是:

 |暗|暗| 光 |暗|暗| |暗|光| 光 |光|暗| |光|光|火把|光|光| |暗|光| 光 |光|暗| |暗|暗| 光 |暗|暗| 

萤石:

 |光|光| 光 |光|光| |光|光| 光 |光|光| |光|光|萤石|光|光| |光|光| 光 |光|光| |光|光| 光 |光|光| 

输入格式

输入共 m+k+1行。
第一行为 n,m,k。
第 2到第 m+1 行分别是火把的位置 xi​,yi​。
第 m+2到第 m+k+1 行分别是萤石的位置 oi​,pi​。

注:可能没有萤石,但一定有火把。

输出格式

有几个点会生出怪物。

输入输出样例

输入 #1复制

5 1 0 3 3 

输出 #1复制

12

说明/提示

数据保证,1≤n≤100,1≤m+k≤25,11≤m≤25,0≤k≤5。

代码实现

import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc=new Scanner(System.in); int n,m,k; n=sc.nextInt(); m=sc.nextInt(); k=sc.nextInt(); int[][] arr=new int[n+4][n+4]; for (int i = 0; i < m; i++) { int x=sc.nextInt(); int y=sc.nextInt(); x=x+1; y=y+1; arr[x][y]=1; arr[x+1][y]=1; arr[x+2][y]=1; arr[x-1][y]=1; arr[x-2][y]=1; arr[x][y+1]=1; arr[x][y+2]=1; arr[x][y-1]=1; arr[x][y-2]=1; arr[x+1][y+1]=1; arr[x-1][y-1]=1; arr[x-1][y+1]=1; arr[x+1][y-1]=1; } for (int i = 0; i < k; i++) { int x=sc.nextInt(); int y=sc.nextInt(); x=x+1; y=y+1; for (int i1 = x-2; i1 <= x+2; i1++) { for (int j = y-2; j <=y+2 ; j++) { arr[i1][j]=1; } } } int count=0; for (int i = 2; i < n+2; i++) { for (int j = 2; j <n+2 ; j++) { if (arr[i][j]==0) { count++; } } } System.out.println(count); } }

思路

为了防止地图越界,将n×n的二维数组扩大为(n+4)×(n+4),最后统计时只统计原二维数组。

火把暴力  萤石比较简单

 

 

 

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/153740.html

(0)
上一篇 2025-03-02 14:15
下一篇 2025-03-02 14:20

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信