java迷宮自動生成與尋找路徑,java迷宮尋路算法

本文目錄一覽:

java迷宮路徑總條數問題

int[][] data是你的迷宮數組,返回值是路徑總條數,不需要遞歸

public int findWayCount(int[][] data) {

int[][] way = new int[data.length][];

for (int m = 0; m data.length; m++) {

way[m] = new int[data[m].length];

for (int n = 0; n data[m].length; n++) {

if (data[m][n] == 0) {

way[m][n] = 0;

} else if (m == 0 n == 0) {

way[m][n] = data[0][0];

} else if (m == 0) {

way[m][n] = way[m][n – 1];

} else if (n == 0) {

way[m][n] = way[m – 1][n];

} else {

way[m][n] = way[m][n – 1] + way[m – 1][n];

}

}

}

JAVA迷宮問題,怎麼輸出所走路徑的坐標

在Way函數的if(Maza[Loci][Locj]==0) 語句裡面Maza[Loci][Locj]=2;前面加一句

System.out.println(“The Maza route is (“+Loci+”,”+Locj+”)”);就打印出程序所走路徑的坐標了.

java自動走迷宮線程問題

以一個M×N的長方陣表示迷宮,0和1分別表示迷宮中的通路和障礙。設計一個程序,對任意設定的迷宮,求出一條從入口到出口的通路,或得出沒有通路的結論。

(1) 根據二維數組,輸出迷宮的圖形。

(2) 探索迷宮的四個方向:RIGHT為向右,DOWN向下,LEFT向左,UP向上,輸出從入口到出口的行走路徑。

求Java關於迷宮的算法(用棧實現)

package com.Albert.LabyringhStack;

public class Point {

int x;

int y;

int direction;   //direction指向此點附近的一個點 應該有四個 編號為1 2 3 4

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 getDirection() {

return direction;

}

public void setDirection(int direction) {

this.direction = direction;

}

public void addDirection(){

this.direction++;

}

public Point() {

}

public Point(int x, int y) {

super();

this.x = x;

this.y = y;

this.direction = 1;

}

public Point(int x, int y, int direction) {

super();

this.x = x;

this.y = y;

this.direction = direction;

}

}

package com.Albert.LabyringhStack;

import java.util.*;

public class LabyringhStack {

public Point S;

public Point F;

char[][] mazemap;

StackPoint path;

public LabyringhStack() {

}

public LabyringhStack(char[][] ma) {        //初始化 存入數組

this.mazemap = new char[ma.length][ma[0].length];

for(int i=0;ima.length;i++){

for(int j=0;jma[0].length;j++){   //mazemap[0]必須有元素 不可為空

this.mazemap[i][j] = ma[i][j];

}

}

S = returnPlace(‘S’);

F = returnPlace(‘F’);

}

public Point returnPlace(char s){      //返回數組中字符的位置

Point point = new Point();

for(int i=0;ithis.mazemap.length;i++){

for(int j=0;jthis.mazemap[0].length;j++){   //mazemap[0]必須有元素 不可為空

if(this.mazemap[i][j]==s)

{   point.setX(i);

point.setY(j);

point.setDirection(1);

}

}

}

return point;

}

public char returnChar(Point point){

if(point.getX()=0point.getY()=0)

  return this.mazemap[point.getX()][point.getY()];

else

  return ‘#’;

}

public void replacePlace(Point point, char s){  //更改特定位置處的字符

mazemap[point.getX()][point.getY()] = s;

}

public void printPath(){

StackPoint tempPath = new StackPoint();

while(!path.empty()){                                      //對棧進行反序

tempPath.push(path.pop());

}

while(!tempPath.empty()){

System.out.print(“(“+tempPath.peek().getX()+”,”+tempPath.pop().getY()+”)”);

}

}

public boolean getPath(){                   //取得路徑的算法  如果有路徑就返回真

path = new StackPoint();

S.setDirection(1);

path.push(S);

replacePlace(S, ‘X’);

while(!path.empty()){

Point nowPoint = path.peek();    //取得當前位置

if(nowPoint.getX()==F.getX()nowPoint.getY()==F.getY()){

//printPath();

return true;

}

Point temp = new Point();        //存放下一個可走的位置

int find = 0;                    //標誌   是否可向下走

while(nowPoint.getDirection()5find==0){

switch(nowPoint.getDirection()){

case 1:temp = new Point(nowPoint.getX(),nowPoint.getY()-1,1); break;  //取得當前位置左邊的位置  

case 2:temp = new Point(nowPoint.getX()+1,nowPoint.getY(),1); break;//取得當前位置下邊的位置  

case 3:temp = new Point(nowPoint.getX(),nowPoint.getY()+1,1); break;//取得當前位置右邊的位置  

case 4:temp = new Point(nowPoint.getX()-1,nowPoint.getY(),1); break;//取得當前位置上邊的位置 

}

nowPoint.addDirection();                    //指向下一個需要驗證的點

if(returnChar(temp)==’O’||returnChar(temp)==’F’) find = 1;    //如果能向下走則置為1

}

if(find==1){                                    //如果可走就進棧

replacePlace(temp, ‘X’);           //設置成X 防止回走

// printArr();

path.push(temp);

}else{                                         //如果不可走就退棧

replacePlace(nowPoint, ‘O’);     

path.pop();

}

}

return false;

}

public void printArr(){

for(int i=0;imazemap.length;i++){

for(int j=0;jmazemap[0].length;j++){   //mazemap[0]必須有元素 不可為空

System.out.print(mazemap[i][j]);

}

System.out.println();

}

System.out.println();

}

}

package com.Albert.LabyringhStack;

public class Main {

/**

 * @param args

 */

public static void main(String[] args) {

// TODO Auto-generated method stub

char[][] mazemap = {

{‘M’,’M’,’M’,’M’,’M’,’M’,’M’,’M’},

{‘M’,’S’,’O’,’O’,’M’,’M’,’M’,’M’},

{‘M’,’M’,’M’,’O’,’M’,’M’,’M’,’M’},

{‘M’,’M’,’O’,’O’,’O’,’O’,’M’,’M’},

{‘M’,’M’,’M’,’M’,’M’,’F’,’M’,’M’},

{‘M’,’M’,’M’,’M’,’M’,’M’,’M’,’M’},

{‘M’,’M’,’M’,’M’,’M’,’M’,’M’,’M’}

};

  LabyringhStack solution = new LabyringhStack(mazemap);

  if(solution.getPath()){

  System.out.print(“迷宮路徑如下:”);

  solution.printPath();

  }

  else {

  System.out.println(“沒有可走的路”);

}

    }

}

求用java語言尋找走出迷宮路線的算法

首先給定一個初始坐標,然後構建一個容器保存坐標值,之後進行迭代,橫坐標+1,或者縱坐標+1,這個順尋自己定義(四個方向),經過的“路徑”保存在那個容器中,如果遇到死角,以此往回迭代,在容器中將遇到死角的那個坐標刪除。最後找到自己定義的那個迷宮出口坐標。

原創文章,作者:FAOW,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/137459.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
FAOW的頭像FAOW
上一篇 2024-10-04 00:17
下一篇 2024-10-04 00:17

相關推薦

  • 如何查看Anaconda中Python路徑

    對Anaconda中Python路徑即conda環境的查看進行詳細的闡述。 一、使用命令行查看 1、在Windows系統中,可以使用命令提示符(cmd)或者Anaconda Pro…

    編程 2025-04-29
  • 蝴蝶優化算法Python版

    蝴蝶優化算法是一種基於仿生學的優化算法,模仿自然界中的蝴蝶進行搜索。它可以應用於多個領域的優化問題,包括數學優化、工程問題、機器學習等。本文將從多個方面對蝴蝶優化算法Python版…

    編程 2025-04-29
  • Python實現爬樓梯算法

    本文介紹使用Python實現爬樓梯算法,該算法用於計算一個人爬n級樓梯有多少種不同的方法。 有一樓梯,小明可以一次走一步、兩步或三步。請問小明爬上第 n 級樓梯有多少種不同的爬樓梯…

    編程 2025-04-29
  • AES加密解密算法的C語言實現

    AES(Advanced Encryption Standard)是一種對稱加密算法,可用於對數據進行加密和解密。在本篇文章中,我們將介紹C語言中如何實現AES算法,並對實現過程進…

    編程 2025-04-29
  • Harris角點檢測算法原理與實現

    本文將從多個方面對Harris角點檢測算法進行詳細的闡述,包括算法原理、實現步驟、代碼實現等。 一、Harris角點檢測算法原理 Harris角點檢測算法是一種經典的計算機視覺算法…

    編程 2025-04-29
  • 數據結構與算法基礎青島大學PPT解析

    本文將從多個方面對數據結構與算法基礎青島大學PPT進行詳細的闡述,包括數據類型、集合類型、排序算法、字符串匹配和動態規劃等內容。通過對這些內容的解析,讀者可以更好地了解數據結構與算…

    編程 2025-04-29
  • 瘦臉算法 Python 原理與實現

    本文將從多個方面詳細闡述瘦臉算法 Python 實現的原理和方法,包括該算法的意義、流程、代碼實現、優化等內容。 一、算法意義 隨着科技的發展,瘦臉算法已經成為了人們修圖中不可缺少…

    編程 2025-04-29
  • 神經網絡BP算法原理

    本文將從多個方面對神經網絡BP算法原理進行詳細闡述,並給出完整的代碼示例。 一、BP算法簡介 BP算法是一種常用的神經網絡訓練算法,其全稱為反向傳播算法。BP算法的基本思想是通過正…

    編程 2025-04-29
  • 粒子群算法Python的介紹和實現

    本文將介紹粒子群算法的原理和Python實現方法,將從以下幾個方面進行詳細闡述。 一、粒子群算法的原理 粒子群算法(Particle Swarm Optimization, PSO…

    編程 2025-04-29
  • Python文件路徑賦值

    Python中文件操作是非常基本的操作,而文件路徑是文件操作的前提。本文將從多個方面闡述如何在Python中賦值文件路徑。 一、絕對路徑和相對路徑 在Python中,路徑可以分為絕…

    編程 2025-04-28

發表回復

登錄後才能評論