它表示一个迷宫,其中的1表示墙壁,0表示可以走的路,只能横着走或竖着走,不能斜着走,要求编程序找出从左上角到右下角的最短路线。
package algorithm_java;
import java.util.Scanner;
import java.util.Stack;
/**
* 路径问题 可以走的最小路径
*/
class Node{
public int x;
public int y;
Node(int x, int y){
this.x = x;
this.y = y;
}
}
public class Labyrinth_Path {
public static void main(String[] args){
Scanner scanner = new Scanner(System.in);
int labyrinth[][] = new int[5][5];
for (int i = 0; i < 5; i++) {
for (int j = 0; j < 5; j++) {
labyrinth[i][j] = scanner.nextInt();
}
}
judge(labyrinth);
}
private static void judge(int[][] labyrinth_1) {
int[][] dir = {{1, 0}, {0, 1}}; // 行走的方向
Stack<Node> stack = new Stack<>(); // 设置一个栈来存储信息
int [][] visited = new int[5][5]; // 标记是否被访问 和labyrinth大小一致
Node start = new Node(0, 0); // 开始的节点信息
Node end = new Node(4, 4); // 结束的位置
visited[start.x][start.y] = 1; // 将起点信息标记为1
stack.push(start); // 将起点信息压栈
while (!stack.isEmpty()){ // 不为空没有找到解
boolean flag = false; // 标记是否找了一个方向
Node pek = stack.peek();
if (pek.x == end.x && pek.y == end.y){
break;
} else {
for (int i = 0; i < 2; i++) {
Node nbr = new Node(pek.x + dir[i][0], pek.y + dir[i][1]);
// 判断是否满足条件
if (nbr.x >= 0 && nbr.x < 5 && nbr.y >= 0 && nbr.y < 5 && labyrinth_1[nbr.x][nbr.y] == 0 && visited[nbr.x][nbr.y] == 0){
stack.push(nbr);
visited[nbr.x][nbr.y] = 1;
flag = true;
break;
}
}
if (flag){ // 找到了方向 就不用执行出栈 一直往下找
continue;
}
stack.pop(); // 两个方向都不可以出栈
}
}
Stack<Node> stackRev = new Stack<>(); // 调整栈的内容
while (!stack.isEmpty()){
stackRev.push(stack.pop());
}
while (!stackRev.isEmpty()){
System.out.println("(" + stackRev.peek().x + "," + stackRev.peek().y + " )");
stackRev.pop();
}
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)