尋找迷宮中的最少步數的乙個小演算法

2021-10-03 03:39:16 字數 3252 閱讀 9114

/**

* * s 0 1 0

* 0 0 0 0

* 0 0 1 0

* 0 1 e 0

* 0 0 0 1

* ** 豎軸為x軸

* 橫軸為y軸

*//**

* 迷宮找最短路徑 0代表平地,1代表障礙物,s代表起點,e代表終點 (起點和終點肯定也是0)

*/

package algorithm;

public

class

algorithm2

,//右

,//下

,//左

//上}

;static

int[

] alllocation =

newint[50

][50]

;static

int[

] marks =

newint[50

][50]

;static

static

int endx, endy;

//終點

static

int startx, starty;

//起點

static

int min =

99999

;static

int n =5;

//行數

static

int m =4;

//列數

public

static

void

main

(string[

] args)

//深度優先遍歷

public

static

void

dfs(

int x,

int y,

int step)

return;}

//列舉四種走法 這裡的走法是 右 下 左 上

for(k =

0; k <=

3; k++

)//判斷該點是否為障礙物或者已經在路徑中

if(alllocation[tx]

[ty]==0

&& marks[tx]

[ty]==0

)}return;}

}

package algorithm;

public

class

algorithm3

public

static

void

main

(string[

] args)

int a[

]=newint[51

][51]

,//迷宮座標儲存

book[

]=newint[51

][51]

;//標記是否使用過

//我這列從1,1開始賦值

a[1]

[1]=

0;a[1]

[2]=

0;a[1]

[3]=

1;a[1]

[4]=

0;a[2]

[1]=

0;a[2]

[2]=

0;a[2]

[3]=

0;a[2]

[4]=

0;a[3]

[1]=

0;a[3]

[2]=

0;a[3]

[3]=

1;a[3]

[4]=

0;a[4]

[1]=

0;a[4]

[2]=

1;a[4]

[3]=

0;a[4]

[4]=

0;a[5]

[1]=

0;a[5]

[2]=

0;a[5]

[3]=

0;a[5]

[4]=

1;//右 下 左 上

int next[

]=,,

,};int head =1,

//頭 tail =1;

//尾int n =5,

//行數

m =4,

//列數

startx =1,

//標記開始座標被占用

starty =1,

p =4,

//終點x座標

q =3,

//終點y座標

tx =1,

//記錄變化的x座標

ty =1,

//記錄變化的y座標

flag;

//標記是否到達終點 0:沒達到 1:表示達到

que[tail]

.x = startx;

que[tail]

.y = starty;

que[tail]

.f =0;

que[tail]

.s =0;

tail++

; book[startx]

[starty]=1

; flag =0;

//標記是否到達終點 0:沒達到 1:表示達到

while

(head < tail)

if(a[tx]

[ty]==0

&& book[tx]

[ty]==0

)if(tx == p && ty == q)}if

(flag ==1)

head++;}

system.out.

println

("################最少步數為########");

system.out.

println

(que[tail -1]

.s);

system.out.

println

("###########最短路徑的逆行座標###############");

note note = que[tail -1]

;dowhile

(note.f !=0)

;}}

列印結果如下:

################最少步數為########

7###########最短路徑的逆行座標###############

4,34,4

3,42,4

2,32,2

1,2

尋找全排列的下乙個數

題目 給出乙個正整數,找出這個正整數所有數字全排列的下乙個數。即就是在乙個整數包含數字的全部組合中,找到乙個大於且僅大於原數的新整數。例如 輸入12345,則返回12354。解題思路 從後向前檢視逆序區域,找到逆序區域的前一位,也就是數字交換的邊界 讓逆序區域的前一位和逆序區域中大於它的最小的數字交...

乙個走迷宮的程式

本文給出乙個c語言版的走迷宮的程式。迷宮的寬和高,迷宮矩陣,迷宮的入口和出口從檔案讀入。程式首先讀入迷宮資料,然後顯示迷宮矩陣,最後呼叫迷宮搜尋程式找到乙個路徑,並輸出。1.迷宮的表示。迷宮用結構體matrix來表示 包括迷宮矩陣 迷宮的寬,迷宮的高,迷宮入口的座標,迷宮出口的座標。結構體定義如下 ...

寫乙個簡單的迷宮

二話不說 上迷宮 include include define number 13 int fx 4 int fy 4 void prin char arr number 列印 bool work char arr number int x,int y 判斷是否可以走 bool mymap char...