Java实现对图的广度优先搜索
来源:互联网 发布:php过滤敏感词的例子 编辑:程序博客网 时间:2024/06/06 10:56
import java.util.LinkedList;import java.util.Queue;//二维数组的广度优先遍历,级图的遍历public class BFSArray {static int[][] map;//定义二维数组static int row;//行static int col;//列static int endx,endy;//记录结束位置static int num=1;//记录访问的顺序//定义坐标移动的方向--右-左-下-上static int[][] dex={{1,0},{-1,0},{0,-1},{0,1}}; public static void main(String[] args) {//初始化数组map=new int[5][5];row=5;col=5;endx=4;endy=4;BFS();//查看遍历的路径for (int i = 0; i < row; i++) {for (int j = 0; j < col; j++) {System.out.print(map[i][j]+"\t");}System.out.println();}}//广度优先遍历核心算法public static void BFS(){//初始化一个空的队列用于存储每一个点Queue<Point> q=new LinkedList<Point>();//初始化开始遍历的点为【0,0】Point poin=new Point(0,0); //将第一个点从队尾插入q.add(poin);//把第一个点置为,已访问map[poin.x][poin.y]=num++;while(!q.isEmpty()){//只要队列不为空就一直执行//取出并移除当前队列中队列头的元素Point pinNow=q.poll();//退出条件,达到最终要的点if(pinNow.x==endx&&pinNow.y==endy){return;}//循环方向数组for (int i = 0; i < 4; i++) {//获得该点的坐标,并通过dex数组记录的方向进行移动int m=pinNow.x+dex[i][0];int n=pinNow.y+dex[i][1];//对新的坐标m,n进行判断 是否可以继续遍历if(m>=0&&m<row&&n>=0&&n<col){//数组下标没有越界//System.out.println("can");if(map[m][n]==0){//没有访问过//System.out.println(m+"....."+n);//输出要添加到队列的点q.add(new Point(m,n));//添加到队列中,并把该点置为已访问map[m][n]=num++;}}}}}}//定义图的点的坐标class Point{int x;int y;public Point(){}public Point(int x, int y) {super();this.x = x;this.y = y;}
运行结果
阅读全文
0 0
- Java实现对图的广度优先搜索
- java 实现 图的广度优先搜索
- 广度优先搜索与深度优先搜索的 java 实现
- 图的深度、广度优先搜索(JAVA实现)
- 图的广度优先搜索算法实现
- 图的广度优先搜索--python实现
- 基于图的深度优先搜索和广度优先搜索java实现
- java实现无向图的深度优先搜索和广度优先搜索
- java实现图的深度优先搜索和广度优先搜索
- JAVA实现图的深度优先搜索和广度优先搜索
- 广度优先搜索的实现
- 广度优先搜索的实现
- 图搜索(广度优先java)
- 图搜索(广度优先java)
- 图搜索(广度优先java)
- 图搜索(广度优先java)
- 图的广度优先搜索
- 图的广度优先搜索
- EJB到底是什么
- git cherry-pick使用小结
- Android中自定义Toast视图和修改显示位置
- Android基础之最新正则表达式
- log4j+slf4j+HandlerExceptionResolver 日志系统
- Java实现对图的广度优先搜索
- 安卓学习Blog整理
- js和php方式,科学计数法转换成普通数
- ubuntu ceph 块 命令操作
- 输出字符奇数位置的字符串
- 高斯函数以及在图像处理中的应用总结
- 说说我了解的模拟电路与数字电路
- SQLServer FOR XML PATH使用案例
- MacPro 系统空间竟占90G,如何清理--OmniDiskSweeper