- 浏览: 41814 次
- 性别:
最新评论
题目:给定一个起点和一个终点。在一个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结束
发表评论
-
2012-03-16 20:52 最大公约数;最小公倍数
2012-05-18 21:45 1373求最小公倍数方法如下: (1)、两数相乘法。 ... -
裴波那契算法
2012-05-18 21:40 895裴波那契算法,数组算法 #include<st ... -
一些的算法的格式
2012-05-17 12:15 1086做题目做久了之后就会发现,算法是有格式的。 一、深度优 ... -
第三届蓝桥杯预赛真题-C++本科组-10题(Java实现)
2012-05-15 11:11 976今盒子里有n个小球,A、B两人轮流从盒中取球,每个 ... -
第三届蓝桥杯预赛真题-C++高职组-10题(Java实现)
2012-05-15 10:57 12842x3=6个方格中放入ABCDE五个字母,右下角的那个 ... -
第三届蓝桥杯预赛真题-Java高职组-10题
2012-05-14 13:16 1995匪警请拨110,即使手机欠 ... -
第三届蓝桥杯预赛真题-Java本科组-10题
2012-05-14 12:41 1524泊松是法国数学家、物理学家和力学家。他一生致力科学事 ... -
八皇后-位运算版
2012-01-12 18:38 1248八皇后问题,是一 ... -
计算24点-利用二叉树原理
2012-01-10 21:03 1660问题描述80年代全世界流行一种数字游戏,在中国我们把这种游戏称 ... -
吸血鬼数字
2012-01-09 20:32 943题目: 吸血鬼数字是 ... -
字符串的排列(A(m,n)),可重复选
2012-01-09 13:28 1313题目:现有ABCDE 5个球 构成的排列组合 可重复抽取 最多 ... -
蛇形矩阵
2012-01-09 13:38 1060Problem蛇形矩阵是由1开始的自然数依次排列成的一个矩阵上 ... -
字符串的排列(A(m,n))
2012-01-07 18:18 990题目:有A,B,C,D,E 5个字母,从其中任选3个,要求列出 ... -
字符串的组合(C(m,n))
2012-01-07 17:46 1403题目:有A,B,C,D,E 5个字母,从其中任选3个,要求列出 ... -
汉诺塔
2012-01-07 17:32 974关于汉诺塔大家应该很熟悉吧。 河內之塔(Towers ... -
三角螺旋矩阵
2012-01-07 17:27 1121打印如下矩阵,如果 n=7 则输出: 1 18 2 ...
相关推荐
GPS寻找最短路径,本程序其实是一个简化版本,基本实现功能如下: 功能一: 输入:起点和终点(已知交通图) 输出:起点至终点的最短路径 功能二: 能够在已知的地图中加入新的城市,并且对其其他的功能不受影响,即 ...
总结来说,A*算法是寻找最短路径的有效工具,它结合了Dijkstra算法的精确性和启发式的效率。在Java中实现A*算法,主要涉及到`Node`、`Link`和搜索逻辑的`FindBestPath`类的设计和实现。通过分析和理解这些类的源代码...
通过以上讲解,我们可以理解Floyd算法的基本概念、实现过程以及如何在MATLAB环境中运用该算法来解决寻找最短路径的问题。利用MATLAB的强大计算能力,可以方便地处理大型图数据,实现高效、准确的最短路径计算。
在IT领域,尤其是在图论和算法设计中,寻找最短路径是一个常见的问题。C语言作为基础的编程语言,被广泛用于实现各种算法,包括解决最短路径问题。本篇文章将详细探讨如何使用C语言来寻找图中各节点之间的最短路径。...
在IT领域,寻找最短路径算法是图论中的一个核心问题,广泛应用于网络设计、物流配送、交通规划、社交网络分析等场景。本主题聚焦于如何通过多种算法的叠加来寻找最优解,并强调了速度的重要性。以下是关于这个话题的...
"Dijkstra算法寻找最短路径的完整源代码" 本资源提供了Dijkstra算法寻找最短路径的完整源代码,同时附带了Kruskal最小生成树算法。该程序提供了输入输出的完整控制台程序,能够帮助用户快速了解和应用Dijkstra算法...
在IT领域,尤其是在网络路由、图论和游戏设计等应用中,“自动寻找最短路径”是一个核心问题。这里我们主要探讨的是使用C语言实现的经典最短路径算法。C语言是一种强大的编程语言,常用于系统编程、嵌入式系统以及...
实现迷宫寻找最短路径寻找最短路径寻找最短路径
在寻找最短路径时,不仅要求总距离最小,还需要确保路径必须包含这些特定的节点。这需要在算法中增加额外的检查和调整,确保每一步的扩展都符合这一要求。 3. **三种应用模式**: - **模式1**:从起点出发,必须...
基于C#的AI自动寻路:通过向四周循环遍历,标记路径值,寻找最短路径+源码,适合毕业设计、课程设计、项目开发。项目源码已经过严格测试,可以放心参考并在此基础上延申使用~ 基于C#的AI自动寻路:通过向四周循环...
A*算法在寻找最短路径中的应用 A*算法是一种常用的路径搜索算法,它广泛应用于游戏开发、机器人导航、交通路径规划等领域。该算法通过评估每个节点的成本和启发式函数值,选择最优的路径来避免障碍物。 A*算法的...
A*搜索算法在Dijkstra的基础上加入了启发式信息,提高了寻找最短路径的效率,尤其适合处理大规模问题。 在AE中最短路径分析的应用,可能涉及到动画制作和视觉效果设计。例如,设计师可能需要找到两点间在虚拟空间中...
这个项目名为“迷宫探索-寻找最短路径”,其目标是营救公主,即找到迷宫中从起点到终点的最短路径。通常,这类问题可以通过多种算法来解决,如深度优先搜索(DFS)、广度优先搜索(BFS)或者A*搜索算法等。在这个...
在计算机科学中,寻找图中的最短路径是一个常见的问题,特别是在网络路由、地图导航和资源分配等领域。本文将深入探讨两种常用的最短路径算法:Dijkstra算法和Floyd-Warshall算法,并提供C语言实现的概述。 首先,...
在寻找最短路径时,A*通过估计从当前节点到目标节点的代价来指导搜索,从而提高效率。在无向图中,A*算法可以非常高效地找到最短路径,特别是在大型图中。 项目中的`题目.txt`可能是对这些问题的具体描述或测试用例...
在这个场景下,我们要讨论的是如何在C#环境中利用MAPXTREME实现寻找最短路径的功能。"FINDSHORTPATH"很可能是一个特定的函数或者类,用于解决这个问题。 首先,我们需要了解MAPXTREME的基本概念。MAPXTREME是一个...
"图的最短路径、拓扑排序和关键路径" 图的最短路径是图论中的一种重要概念,它是指从图的一顶点到另一顶点的路径中,所经过的边的...这些算法可以应用于各种图论问题的解决中,如寻找最短路径、拓扑排序和关键路径等。
- **Ford最短路**:Ford-Fulkerson算法是求解网络流最大流的问题,虽然不是寻找最短路径,但与Floyd算法一样,它也涉及图的路径和容量的概念,都是图论中的经典算法。 - **Floyd算法,只需改带权邻接矩阵.txt**:...
综上所述,A星算法是一种高效寻找最短路径的策略,通过结合实际路径成本和启发式估计,能够在大量可能的路径中快速定位最优解。理解和掌握A星算法,对于解决现实世界中的路径规划问题具有重要意义。