POJ3213 java代码示例
时间: 2024-11-10 21:13:02 浏览: 75
POJ 3213是一个经典的Java题目,叫做“Counting Valleys”,它主要涉及栈的操作以及基本的路径遍历算法。这个题目描述的是一个人在一个二维网格上行走,每次可以向上、下、左、右移动一步,并询问经过山谷(地势低于周围四个方向的点)的次数。
下面是一个简单的Java代码示例,用于解决这个问题:
```java
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int[][] grid = new int[50][50];
int steps = scanner.nextInt();
for (int i = 0; i < steps; i++) {
String direction = scanner.next().charAt(0) + "";
int x = scanner.nextInt() - 1;
int y = scanner.nextInt() - 1;
if (direction.equals("U")) {
grid[y][x]++;
} else if (direction.equals("D")) {
grid[y][x]--;
} else if (direction.equals("L")) {
grid[y][x] += (grid[y][x - 1] > 0 ? -1 : 1);
} else {
grid[y][x] += (grid[y][x + 1] > 0 ? -1 : 1);
}
}
int valleyCount = 0;
for (int[] row : grid) {
for (int cell : row) {
if (cell < 0 && cell % 2 == 1) { // 判断是否为山谷
valleyCount++;
}
}
}
System.out.println("Number of valleys: " + valleyCount);
}
}
```
这个程序首先读入输入的步数和行进的方向,然后更新网格的高度值。最后遍历整个网格,计算出所有低于相邻位置的点的数量,即山谷的数量。
阅读全文