java实现从迷宫寻找出路算法(广度优先搜索)
2017-07-12 16:23
501 查看
import com.alibaba.fastjson.JSONObject; import java.util.ArrayDeque; /** * Created by Administrator on 2017/7/12. */ public class ScopeSearchFirst { public static void main(String... args) { int[][] a = new int[51][51];//初始化为0 System.out.println(JSONObject.toJSONString(a)); int[][] book = new int[51][51];//初始化为0 int[][] next = {{0,1},{0,-1},{1,0},{-1,0}}; for(int i=0;i<=50;i++) { for (int j = 0; j < 50; j++) { if (i == 0 && j == 0) { continue; } if (j == i) { a[i][j] = 1;//设置为障碍物 break; } } } System.out.println("初始化后的结果:"); for(int i=0;i<50;i++) for(int j=0;j<50;j++) if(j==49) System.out.println(); else System.out.print(a[i][j]); int startx = 0; int starty = 0; int p = 35; int q = 23; ArrayDeque queue = new ArrayDeque(); Note note = new Note(); note.setX(startx); note.setY(starty); note.setS(0); queue.addLast(note); book[0][0]=1; int flag = 0; int tx=0; int ty=0; while (!queue.isEmpty()) { for (int k = 0; k <= 3; k++) { tx = queue.getFirst().getX()+next[k][0]; ty = queue.getFirst().getY()+next[k][1]; if(tx<0||tx>=50||ty<0||ty>=50) continue; if(a[tx][ty]==0&&book[tx][ty]==0){ book[tx][ty]=1; Note newNote = new Note(); newNote.setX(tx); newNote.setY(ty); newNote.setF(queue.getFirst()); newNote.setS(queue.getFirst().getS()+1); queue.addLast(newNote); } if(tx==p&&ty==q){ flag=1; break; } } if(flag==1) break; queue.removeFirst(); } System.out.println("最短距离:"+queue.getLast().getS()); } static class Note{ private int x; private int y; private int s; private Note f; 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; } public int getS() { return s; } public void setS(int s) { this.s = s; } public Note getF() { return f; } public void setF(Note f) { this.f = f; } } }
相关文章推荐
- 寻找兔子算法(java实现)
- java实现迷宫算法--转
- 严蔚敏《数据结构》中迷宫算法java实现
- java实现迷宫算法--转
- Java实现算法导论中图的广度优先搜索(BFS)和深度优先搜索(DFS)
- java实现迷宫算法--转
- java如何实现迷宫算法
- java归并算法实现
- 在java中实现图形学中的直线算法
- 一个用Dijkstra算法实现的路由算法的java程序——1 GraphAdjList类
- [基本算法]Java——编写一个线段类,实现基本数学算法
- Java中的几种算法的实现
- 用Java实现归并排序(Merge-Sort)算法
- MD5 算法的java实现
- java实现的18位身份证格式验证算法
- java实现的18位身份证格式验证算法
- java实现的18位身份证格式验证算法
- 在java中实现图形学中的椭圆算法
- 图象细化算法实现的java applet源代码
- 中国农历算法java实现(转自Herong Yang)