日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

迷宫回溯问题分析和实现

發布時間:2023/12/20 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 迷宫回溯问题分析和实现 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

原文鏈接:傳送門

迷宮問題

說明:

  • 小球得到的路徑,和程序員設置的找路策略有關即:找路的上下左右的順序相關
  • 再得到小球路徑時,可以先使用(下右上左),再改成(上右下左),看看路徑是不是有變化
  • 測試回溯現象
  • 思考: 如何求出最短路徑?
//下面代碼的找路策略是:下右上左 public static boolean setWay(int[][] map, int i, int j) {if (map[6][5] == 2) { // 表示路已經找到了return true;} else {if (map[i][j] == 0) { // 0: 可以走還沒有走// 這里開始遞歸回溯map[i][j] = 2; // 認為該點是可以走通,但是不一定if (setWay(map, i + 1, j)) { // 下找return true;} else if (setWay(map, i, j + 1)) { // 右return true;} else if (setWay(map, i - 1, j)) { // 上return true;} else if (setWay(map, i, j - 1)) { // 左return true;} else {// 走不通map[i][j] = 3;return false;}} else { //如果map(i)(j)!=0 //則值 1,2,3return false;} }} int[][] map = new int[8][7]; //上下全部置1 for(int i = 0 ; i<7;i++){map[0][i] = 1;map[7][i] = 1; } //左右全部置1 for (int i = 0; i< 8; i++) {map[i][0] = 1;map[i][6] = 1; }

完整代碼

package com.atguigu.recursion;/*** ClassName: <br/>* Description: <br/>* Date: 2021-02-22 9:50 <br/>* @project data_algorithm* @package com.atguigu.recursion*/ public class MiGong {public static void main(String[] args) {// 先創建一個二維數組,模擬迷宮// 地圖int[][] map = new int[8][7];// 使用1 表示墻// 上下全部置為1for (int i = 0; i < 7; i++) {map[0][i] = 1;map[7][i] = 1;}// 左右全部置為1for (int i = 0; i < 8; i++) {map[i][0] = 1;map[i][6] = 1;}//設置擋板, 1 表示map[3][1] = 1;map[3][2] = 1; // map[1][2] = 1; // map[2][2] = 1;// 輸出地圖System.out.println("地圖的情況");for (int i = 0; i < 8; i++) {for (int j = 0; j < 7; j++) {System.out.print(map[i][j] + " ");}System.out.println();}//使用遞歸回溯給小球找路//setWay(map, 1, 1);setWay2(map, 1, 1);//輸出新的地圖, 小球走過,并標識過的遞歸System.out.println("小球走過,并標識過的 地圖的情況");for (int i = 0; i < 8; i++) {for (int j = 0; j < 7; j++) {System.out.print(map[i][j] + " ");}System.out.println();}}//使用遞歸回溯來給小球找路//說明//1. map 表示地圖//2. i,j 表示從地圖的哪個位置開始出發 (1,1)//3. 如果小球能到 map[6][5] 位置,則說明通路找到.//4. 約定: 當map[i][j] 為 0 表示該點沒有走過 當為 1 表示墻 ; 2 表示通路可以走 ; 3 表示該點已經走過,但是走不通//5. 在走迷宮時,需要確定一個策略(方法) 下->右->上->左 , 如果該點走不通,再回溯/*** * @param map 表示地圖* @param i 從哪個位置開始找* @param j * @return 如果找到通路,就返回true, 否則返回false*/public static boolean setWay(int[][] map, int i, int j) {if(map[6][5] == 2) { // 通路已經找到okreturn true;} else {if(map[i][j] == 0) { //如果當前這個點還沒有走過//按照策略 下->右->上->左 走map[i][j] = 2; // 假定該點是可以走通.if(setWay(map, i+1, j)) {//向下走return true;} else if (setWay(map, i, j+1)) { //向右走return true;} else if (setWay(map, i-1, j)) { //向上return true;} else if (setWay(map, i, j-1)){ // 向左走return true;} else {//說明該點是走不通,是死路map[i][j] = 3;return false;}} else { // 如果map[i][j] != 0 , 可能是 1, 2, 3return false;}}}//修改找路的策略,改成 上->右->下->左public static boolean setWay2(int[][] map, int i, int j) {if(map[6][5] == 2) { // 通路已經找到okreturn true;} else {if(map[i][j] == 0) { //如果當前這個點還沒有走過//按照策略 上->右->下->左map[i][j] = 2; // 假定該點是可以走通.if(setWay2(map, i-1, j)) {//向上走return true;} else if (setWay2(map, i, j+1)) { //向右走return true;} else if (setWay2(map, i+1, j)) { //向下return true;} else if (setWay2(map, i, j-1)){ // 向左走return true;} else {//說明該點是走不通,是死路map[i][j] = 3;return false;}} else { // 如果map[i][j] != 0 , 可能是 1, 2, 3return false;}}}}

運行結果

地圖的情況 1 1 1 1 1 1 1 1 0 0 0 0 0 1 1 0 0 0 0 0 1 1 1 1 0 0 0 1 1 0 0 0 0 0 1 1 0 0 0 0 0 1 1 0 0 0 0 0 1 1 1 1 1 1 1 1 小球走過,并標識過的 地圖的情況 1 1 1 1 1 1 1 1 2 2 2 2 2 1 1 0 0 0 0 2 1 1 1 1 0 0 2 1 1 0 0 0 0 2 1 1 0 0 0 0 2 1 1 0 0 0 0 2 1 1 1 1 1 1 1 1 Process finished with exit code 0

通過遞歸,遍歷所有方式的路徑,共享棋盤中的數組位置數據

實現查找最優解

策略:下->右->上->左

最后噼里啪啦的回去了

回溯

原文鏈接:傳送門

總結

以上是生活随笔為你收集整理的迷宫回溯问题分析和实现的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 青青草在线免费 | 日本人妻换人妻毛片 | 日本不卡一区在线 | 国产乱人对白 | 日韩手机看片 | 国产精品福利导航 | 4438x全国最大成人 | 中文字幕在线观看av | 精品一区二区久久久久久按摩 | 性天堂网 | 91大片在线观看 | 亚洲欧美91 | 风韵少妇性饥渴推油按摩视频 | 狠狠涩 | 一个人免费在线观看视频 | 色一区二区三区 | 成人av网站免费 | 三年中文在线观看免费观看 | 精品91久久久久久 | 欧美一区二区三区影院 | 国产欧美又粗又猛又爽 | 天天躁日日躁aaaaxxxx | 亚洲国产精品18久久久久久 | 久草热在线观看 | 国产视频一区二区在线播放 | 播放男人添女人下边视频 | jizz亚洲女人高潮大叫 | 免费在线观看视频 | 中文字幕不卡一区 | 日韩不卡的av | 国产精品日韩电影 | 成人h动漫精品一区 | 一级黄色性生活片 | 欧美日一区二区三区 | 国产jjizz一区二区三区视频 | 91午夜理伦私人影院 | 男人靠女人免费视频网站 | 伊人网欧美 | 久久综合一区二区 | 老司机久久| 五月婷影院 | 自拍偷拍亚洲一区 | 天天操天天操天天 | 国语一区二区 | 亚洲黄色激情 | 激情小说五月天 | 男女免费网站 | aaa黄色片 | 欧美在线 | 亚洲 | 黄视频免费在线观看 | 亚洲综合成人av | 国产成人无码av在线播放dvd | caoprom97| 亚洲国产成人精品视频 | jizz日本在线播放 | 97超级碰碰人妻中文字幕 | 中文字幕一区二区三区乱码在线 | 天天综合网天天综合 | 久久国产亚洲精品无码 | 激情五月婷婷小说 | 黑森林av | 国产嫩草视频 | 天堂视频一区二区 | 精品无码在线观看 | 中文字幕第一区 | 91欧美激情一区二区三区 | 午夜网 | aa一级视频 | 伊人网国产 | 男女午夜爽爽 | 精品国产乱码久久久久久浪潮 | 妻色成人网 | a级在线观看 | 亚洲综合成人av | 美日韩av在线 | 成人国产精品蜜柚视频 | 中国黄色一级毛片 | 久久国产福利一区 | 翔田千里一区 | 黑人三级视频 | 男人的天堂一区二区 | 超碰在线观看免费 | 成人在线不卡视频 | 天天操天天射天天 | 性久久久久 | 久久99精品久久久久久琪琪 | 日本中文一区 | 男女羞羞的视频 | 亚洲熟女www一区二区三区 | 国产羞羞 | 天堂在线一区 | 亚洲成人一区在线 | 国产系列在线 | 嫩草研究院在线 | 久久久国产一区二区三区 | 久精品免费视频 | 欧美做爰性生交视频 | 福利一区在线 | 一级黄色片在线观看 |