`

寻找最短路径

 
阅读更多

题目:给定一个起点和一个终点。在一个8*8的棋盘上找出一条最短的路径。

 

 

import java.util.ArrayList;
//主要是采用广度优先的算法。
/**
 *             广度度优先搜索

宽度优先搜索并不是一种很优秀的算法,只里只是简单介绍一下它。

具体方法是:

1、  从A点开始依次展开得到AB、AC、AD、AE四个新结点(第二层结点),当然每个新结点要记录下其距离;

2、  再次以AB展开得到ABC、ABD、ABE三个新结点(第三层结点),而由AC结点可展开得到ACB、ACD、ACE三个新结点,自然AD可以展开得到ADB、ADC、ADE,AE可以展开得到AEB、AEC、AED等新结点,对于每个结点也须记录下其距离;

3、  再把第三层结点全部展开,得到所有的第四层结点:ABCD、ABCE、ABDC、ABDE、ABEC、ABED……AEDB、AEDC,每个结点也需记录下其距离;

4、  再把第四层结点全部展开,得到所有的第五层结点:ABCDE、ABCED、…、AEDBC、AEDCB,每个结点也需记录下其距离;

5、  到此,所有可能的结点均已展开,而第五层结点中最小的那个就是题目的解了。
 */
public class T6 {
	//模拟一个棋盘
	String num[][] = new String[8][8];
	//用来模拟队列的容器
	ArrayList<point> duilie = new ArrayList<point>();

	public static void main(String[] args) {
		T6 test = new T6();
	}

	T6() {
		//对数组初始化,""代表没有访问过
		for (int i = 0; i < num.length; i++) {
			for (int j = 0; j < num[0].length; j++) {
				num[i][j] = "";
			}
		}
		//寻找最短路径,假如起点是7,0 寻找到0,7这个点的最短路径
		zuiduan(7, 0);
		
		System.out.println("最短路径是:"+num[0][7].toString()+"0,7结束");
	
	}

	public void xunzhao(int x, int y ,String lujing) {
		if (!(x < 0 || x > 7 || y < 0 || y > 7) && num[x][y].equals("")) {

			// 设置为访问过。并记录步数
			num[x][y]=lujing;
			point id = new point();
			id.setX(x);
			id.setY(y);
			// 入队
			duilie.add(id);
		}
	}

	public void zuiduan(int i, int j) {
		// 访问原点,设置为访问过。
		
		point id = new point();
		
		num[i][j] ="开始";
		id.setX(i);
		id.setY(j);
		// 入队
		duilie.add(id);
		// 循环队列
		while (duilie.size() != 0) {
			//终止循环的条件
			if (!num[0][7].equals(""))
				break;
			// 出队
			point id1 = duilie.get(0);
			duilie.remove(0);
			// 循环,一次搜索隔壁点
			int x = id1.getX();
			int y = id1.getY();
			String lujing=num[x][y]+x+","+y+"-> ";
			// 判断,如果没有出界并且没有访问过
			xunzhao(x - 1, y,lujing);
			xunzhao(x + 1, y,lujing);
			xunzhao(x, y - 1,lujing);
			xunzhao(x, y + 1,lujing);
		}

	}
//用来记录寻找的每一个点
	class point {
		int x;
		int y;
		public int getX() {
			return x;
		}

		public void setX(int x) {
			this.x = x;
		}

		public int getY() {
			return y;
		}

		public void setY(int y) {
			this.y = y;
		}
	}
}

 寻找最短路径,假如起点是7,0 寻找到0,7这个点的最短路径

输出结果如下:

最短路径是:

开始7,0-> 6,0-> 5,0-> 4,0-> 3,0-> 2,0-> 1,0-> 0,0-> 0,1-> 0,2-> 0,3-> 0,4-> 0,5-> 0,6-> 0,7结束

分享到:
评论

相关推荐

    GPS寻找最短路径程序

    GPS寻找最短路径,本程序其实是一个简化版本,基本实现功能如下: 功能一: 输入:起点和终点(已知交通图) 输出:起点至终点的最短路径 功能二: 能够在已知的地图中加入新的城市,并且对其其他的功能不受影响,即 ...

    寻找最短路径A*算法的实现

    总结来说,A*算法是寻找最短路径的有效工具,它结合了Dijkstra算法的精确性和启发式的效率。在Java中实现A*算法,主要涉及到`Node`、`Link`和搜索逻辑的`FindBestPath`类的设计和实现。通过分析和理解这些类的源代码...

    寻找最短路径的Floyd算法

    通过以上讲解,我们可以理解Floyd算法的基本概念、实现过程以及如何在MATLAB环境中运用该算法来解决寻找最短路径的问题。利用MATLAB的强大计算能力,可以方便地处理大型图数据,实现高效、准确的最短路径计算。

    c语言寻找最短路径算法

    在IT领域,尤其是在图论和算法设计中,寻找最短路径是一个常见的问题。C语言作为基础的编程语言,被广泛用于实现各种算法,包括解决最短路径问题。本篇文章将详细探讨如何使用C语言来寻找图中各节点之间的最短路径。...

    寻找最短路径算法,进行多种算法叠加,选择最优算法,最快算法.

    在IT领域,寻找最短路径算法是图论中的一个核心问题,广泛应用于网络设计、物流配送、交通规划、社交网络分析等场景。本主题聚焦于如何通过多种算法的叠加来寻找最优解,并强调了速度的重要性。以下是关于这个话题的...

    Dijkstra算法寻找最短路径的完整源代码

    "Dijkstra算法寻找最短路径的完整源代码" 本资源提供了Dijkstra算法寻找最短路径的完整源代码,同时附带了Kruskal最小生成树算法。该程序提供了输入输出的完整控制台程序,能够帮助用户快速了解和应用Dijkstra算法...

    自动寻找最短路径

    在IT领域,尤其是在网络路由、图论和游戏设计等应用中,“自动寻找最短路径”是一个核心问题。这里我们主要探讨的是使用C语言实现的经典最短路径算法。C语言是一种强大的编程语言,常用于系统编程、嵌入式系统以及...

    C++迷宫问题 寻找最短路径

    实现迷宫寻找最短路径寻找最短路径寻找最短路径

    经过指定的中间节点集的最短路径算法

    在寻找最短路径时,不仅要求总距离最小,还需要确保路径必须包含这些特定的节点。这需要在算法中增加额外的检查和调整,确保每一步的扩展都符合这一要求。 3. **三种应用模式**: - **模式1**:从起点出发,必须...

    基于C#的AI自动寻路:通过向四周循环遍历,标记路径值,寻找最短路径+源码(毕业设计&课程设计&项目开发)

    基于C#的AI自动寻路:通过向四周循环遍历,标记路径值,寻找最短路径+源码,适合毕业设计、课程设计、项目开发。项目源码已经过严格测试,可以放心参考并在此基础上延申使用~ 基于C#的AI自动寻路:通过向四周循环...

    用A*算法寻找最短路径

    A*算法在寻找最短路径中的应用 A*算法是一种常用的路径搜索算法,它广泛应用于游戏开发、机器人导航、交通路径规划等领域。该算法通过评估每个节点的成本和启发式函数值,选择最优的路径来避免障碍物。 A*算法的...

    最短路径分析.zip_AE最短路径_ae 最短路径_gai_最短流程_最短路径

    A*搜索算法在Dijkstra的基础上加入了启发式信息,提高了寻找最短路径的效率,尤其适合处理大规模问题。 在AE中最短路径分析的应用,可能涉及到动画制作和视觉效果设计。例如,设计师可能需要找到两点间在虚拟空间中...

    迷宫探索-寻找最短路径

    这个项目名为“迷宫探索-寻找最短路径”,其目标是营救公主,即找到迷宫中从起点到终点的最短路径。通常,这类问题可以通过多种算法来解决,如深度优先搜索(DFS)、广度优先搜索(BFS)或者A*搜索算法等。在这个...

    求最短路径的两种算法(C语言实现)

    在计算机科学中,寻找图中的最短路径是一个常见的问题,特别是在网络路由、地图导航和资源分配等领域。本文将深入探讨两种常用的最短路径算法:Dijkstra算法和Floyd-Warshall算法,并提供C语言实现的概述。 首先,...

    java 无向图所有最短路径算法的实现

    在寻找最短路径时,A*通过估计从当前节点到目标节点的代价来指导搜索,从而提高效率。在无向图中,A*算法可以非常高效地找到最短路径,特别是在大型图中。 项目中的`题目.txt`可能是对这些问题的具体描述或测试用例...

    MAPXTREME寻找最短路径的C#实现代码

    在这个场景下,我们要讨论的是如何在C#环境中利用MAPXTREME实现寻找最短路径的功能。"FINDSHORTPATH"很可能是一个特定的函数或者类,用于解决这个问题。 首先,我们需要了解MAPXTREME的基本概念。MAPXTREME是一个...

    图的最短路径、拓扑排序和关键路径

    "图的最短路径、拓扑排序和关键路径" 图的最短路径是图论中的一种重要概念,它是指从图的一顶点到另一顶点的路径中,所经过的边的...这些算法可以应用于各种图论问题的解决中,如寻找最短路径、拓扑排序和关键路径等。

    floyd_floyd最短路径算法_最短路径矩阵_最短路径_只需要改邻接矩阵_

    - **Ford最短路**:Ford-Fulkerson算法是求解网络流最大流的问题,虽然不是寻找最短路径,但与Floyd算法一样,它也涉及图的路径和容量的概念,都是图论中的经典算法。 - **Floyd算法,只需改带权邻接矩阵.txt**:...

    最短路径寻找

    综上所述,A星算法是一种高效寻找最短路径的策略,通过结合实际路径成本和启发式估计,能够在大量可能的路径中快速定位最优解。理解和掌握A星算法,对于解决现实世界中的路径规划问题具有重要意义。

Global site tag (gtag.js) - Google Analytics