算法墙上的门java代码
时间: 2023-10-12 07:19:13 浏览: 62
以下是使用 Java 语言实现算法墙上的门的代码:
```java
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt();
int m = scanner.nextInt();
int[][] map = new int[n][m];
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
map[i][j] = scanner.nextInt();
}
}
int count = 0;
// 遍历每个格子
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
if (map[i][j] == 1) { // 如果是门
boolean canEscape = true; // 是否能逃脱
// 向上遍历
for (int k = i - 1; k >= 0; k--) {
if (map[k][j] == 1) { // 如果是门
canEscape = false; // 不能逃脱
break;
} else if (map[k][j] == 2) { // 如果是墙
break;
}
}
if (canEscape) { // 如果能逃脱
// 向下遍历
for (int k = i + 1; k < n; k++) {
if (map[k][j] == 1) { // 如果是门
canEscape = false; // 不能逃脱
break;
} else if (map[k][j] == 2) { // 如果是墙
break;
}
}
if (canEscape) { // 如果能逃脱
// 向左遍历
for (int k = j - 1; k >= 0; k--) {
if (map[i][k] == 1) { // 如果是门
canEscape = false; // 不能逃脱
break;
} else if (map[i][k] == 2) { // 如果是墙
break;
}
}
if (canEscape) { // 如果能逃脱
// 向右遍历
for (int k = j + 1; k < m; k++) {
if (map[i][k] == 1) { // 如果是门
canEscape = false; // 不能逃脱
break;
} else if (map[i][k] == 2) { // 如果是墙
break;
}
}
if (canEscape) { // 如果能逃脱
count++; // 统计能逃脱的门的数量
}
}
}
}
}
}
}
System.out.println(count);
}
}
```
其中,`map` 数组表示地图,其中 `0` 表示空地,`1` 表示门,`2` 表示墙。
首先读入地图的大小和地图数据,并用两个循环遍历每个格子。对于每个格子,如果是门,则分别向上、下、左、右四个方向遍历,查看是否能够逃脱。如果能够逃脱,则将逃脱的门的数量加一。最后输出逃脱的门的数量即可。