麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 學院 > 開發設計 > 正文

迷宮求解最短路徑問題java版

2019-11-14 11:35:08
字體:
來源:轉載
供稿:網友

對于計算機,面對錯亂復雜的迷宮探路問題也不可能一步就找到最優路徑,而是把所有可行路徑全部走過然后通過比較找出最優路徑,對于每走一步都有4個可行方向可走,然后通過循環借助計算機的高效率找出最優路徑。代碼如下:

public class Maze {//出口目標點坐標PRivate static final int X = 8;private static final int Y = 8;private static final int MaxSize = 200;//迷宮路徑int[][] maze = {{1,1,1,1,1,1,1,1,1,1},{1,0,0,1,0,0,0,1,0,1},{1,0,0,1,0,0,0,1,0,1},{1,0,0,0,0,1,1,0,0,1},{1,0,1,1,1,0,0,0,0,1},{1,0,0,0,1,0,0,0,0,1},{1,0,1,0,0,0,1,0,0,1},{1,0,1,1,1,0,1,1,0,1},{1,1,0,0,0,0,0,0,0,1},{1,1,1,1,1,1,1,1,1,1},};Node Stack[] = new Node[MaxSize];Node Path[] = new Node[MaxSize];//棧頂指針int top = -1;//路徑的計數int count = 1;//記錄最短路徑int minlen = MaxSize;public Maze() {System.out.println("路徑如下:");mazePath(1,1,X,Y);}//尋路方法public void mazePath(int xi,int yi,int xe,int ye){int i,j,di,find;//初始化棧 起始地點入棧top++;Node n = new Node();Stack[top] = n;System.out.println(Stack[top]);Stack[top].i = xi;Stack[top].j = yi;Stack[top].di = -1;maze[xi][yi] = -1;//如果棧不為空就繼續探路while(top>-1){//取出棧頂元素i = Stack[top].i;j = Stack[top].j;di = Stack[top].di;//判斷是否已經找到目標點出口  如果找到出口那么打印路徑if(i==xe && j ==ye){System.out.println("  "+(count++));for(int k = 0;k <= top;k++){System.out.printf("(%d , %d)",Stack[k].i,Stack[k].j);//每行打印5個坐標點然后換行if((k+1)%5==0){System.out.println("");}}System.out.println("");//找出最短路徑  然后賦值給Pathif(top+1 < minlen){minlen = top+1;System.out.println(minlen+"");for(int k = 0;k <= top;k++){Node node = new Node();Path[k] = node;Path[k].i = Stack[k].i;Path[k].j = Stack[k].j;Path[k].di = Stack[k].di;}}//退出一步繼續查找可行路徑maze[Stack[top].i][Stack[top].j] = 0;top--;i = Stack[top].i;j = Stack[top].j;di = Stack[top].di;}//根據四個方向試探性的查找可行路徑find = 0;//用來標記是否已經找到可行路徑  0 沒找到  1找到while(find==0 && di<4){di++;switch(di){           case 0: i = Stack[top].i-1;j = Stack[top].j;break;           case 1: i = Stack[top].i;j = Stack[top].j+1;break;           case 2: i = Stack[top].i+1;j = Stack[top].j;break;           case 3: i = Stack[top].i;j = Stack[top].j-1;break;           }//如果找到可行路徑那么find標記為1if(maze[i][j] == 0){find = 1;}}if(find == 1){//如果找到出口那么進棧Stack[top].di = di;  //進棧前記錄當前立腳點的尋路方向top++;Node n1 = new Node();Stack[top] = n1;Stack[top].i = i;Stack[top].j = j;Stack[top].di = -1;//已走過路徑標記為-1防止重復路過maze[i][j] = -1;}else{//否則退一步,然后繼續試探可行路徑maze[Stack[top].i][Stack[top].j] = 0;  //釋放路徑 為了以后的試探讓路top--;}}//一切執行結束后打印最短路徑System.out.println("最短路徑如下:");System.out.println("最短路徑長度:"+minlen);System.out.println("路徑:");//打印最短路徑for(int k = 0;k < minlen;k++){System.out.printf("(%d , %d)",Path[k].i,Path[k].j);if((k+1)%5 == 0){System.out.println("");}}System.out.println("");}class Node{int i;int j;int di;}public static void main(String[] args) {new Maze();}}


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 黄色片免费看网站 | 久久久久久久久久91 | 88xx成人永久免费观看 | 国产精品高潮视频 | 牛牛a级毛片在线播放 | 中文字幕 欧美 日韩 | 中文字幕在线免费播放 | 精品一区二区三区在线视频 | 91精品国产91 | 欧美一级黄色影院 | 成人免费在线播放 | 销魂美女一区二区 | 国产色视频在线观看免费 | 九九热在线视频观看 | 永久免费黄色大片 | 亚洲网站免费 | 91在线视频网址 | 久久艹精品视频 | 久久国产乱子伦精品 | 成人福利视频网站 | 操操电影| 久久蜜桃精品一区二区三区综合网 | 久久中文字幕在线观看 | 性爱视频免费 | 国产羞羞视频 | 色阁五月 | av在线免费电影 | 国产一级αv片免费观看 | 欧美a在线观看 | 亚洲人成在线播放网站 | 在线1区 | 91精品国| 在线免费av观看 | 国产精品一品二区三区四区18 | 国产99久久久国产精品下药 | 黄网站在线观 | 日韩视频一二三 | 成人午夜高清 | 久久国产精品99久久人人澡 | 激情在线观看视频 | av不卡免费观看 |