#牛客在线求职答疑中心# #牛客在线求职答疑中心#用java编写7-8 sdut-array2-2-局部峰值
分数 10

全屏浏览
作者 周雪芹
单位 山东理工大学
给定一个N行乘N列的2D数组,逐行扫描该值并打印出所有局部峰值,该值大于其左上、上、右上、左、右、左下、下、右下的值(如果有)。
N的范围是2到150。
输入格式:
多组输入。每组输入包含两部分:
第一行包含整数N,表示2D数组的大小。
后面的N行中的每一行包含N个非负整数,用空格分隔。
输出格式:
对于每组输入,输出所有局部峰值按行顺序排列,每个局部峰值后跟一个空格。
如果没有局部峰值,则输出“none”。
每组输出之后加换行符。
输入样例:
2
5 1
1 0
2
5 2
2 3
3
5 5 5
0 5 0
5 5 5
3
1 2 5
2 3 2
4 2 3
输出样例:
5
5
none
5 4
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
栈限制
8192 KB
Java (javac)






1

测试用例


上一题

提交本题作答
分数 10

全屏浏览
作者 周雪芹
单位 山东理工大学
给定一个N行乘N列的2D数组,逐行扫描该值并打印出所有局部峰值,该值大于其左上、上、右上、左、右、左下、下、右下的值(如果有)。
N的范围是2到150。
输入格式:
多组输入。每组输入包含两部分:
第一行包含整数N,表示2D数组的大小。
后面的N行中的每一行包含N个非负整数,用空格分隔。
输出格式:
对于每组输入,输出所有局部峰值按行顺序排列,每个局部峰值后跟一个空格。
如果没有局部峰值,则输出“none”。
每组输出之后加换行符。
输入样例:
2
5 1
1 0
2
5 2
2 3
3
5 5 5
0 5 0
5 5 5
3
1 2 5
2 3 2
4 2 3
输出样例:
5
5
none
5 4
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
栈限制
8192 KB
Java (javac)






1

测试用例


上一题

提交本题作答
全部评论
好的,以下是一个Java代码示例,用于解决您描述的问题:
```java
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
while (scanner.hasNext()) {
int n = scanner.nextInt();
int[][] arr = new int[n][n];
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
arr[i][j] = scanner.nextInt();
}
}
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
boolean isPeak = true;
for (int k = -1; k <= 1; k++) {
for (int l = -1; l <= 1; l++) {
if (i + k >= 0 && i + k < n && j + l >= 0 && j + l < n && arr[i][j] < arr[i + k][j + l]) {
isPeak = false;
break;
}
}
}
if (isPeak) {
System.out.print(arr[i][j] + " ");
}
}
System.out.println();
}
}
}
}
```
这段代码首先读取数组的大小N,然后读取N行N列的2D数组。接着,对于数组中的每个元素,它检查该元素是否大于其左上、上、右上、左、右、左下、下、右下的值。如果是,则将其打印出来。最后,每组输出之后加换行符。
相关推荐
11-07 15:21
产品经理 点赞 评论 收藏
分享