NOJ1147 演算法實驗三 木乃伊迷宮

2021-10-10 19:09:57 字數 2338 閱讀 4266

時限:1000ms 記憶體限制:10000k 總時限:3000ms

描述木乃伊地下宮殿是乙個6行6列的迷宮。作為敢到木乃伊地下宮殿裡去探險的你,有沒有跟木乃伊抓迷藏的心理準備呵!遊戲在木乃伊所在的迷宮裡展開,任務就是盡快趕到出口。你一次只能走一步,而木乃伊可以走兩步,但木乃伊是很笨的,他總是先盡量跟你達到同一列,如果已經是同一列了,他才會像你走來,有牆的地方人和木乃伊都不能過,你可以利用障礙物牽制住木乃伊。

輸入先輸入牆的數量n,然後在後續的n行裡每行有3個數表示一堵牆,3個數分別為格仔的行、列和牆的位置(0表示這個格仔的下方是牆,1表示這個格仔的右方是牆),再下來的3行每行2個數,分別表示木乃伊、人還有出口的位置。

輸出如果能安全逃生則輸出yes,否則輸出no,答案佔一行。

輸入樣例

50 0 0

1 1 1

1 4 1

3 4 1

4 3 0

3 33 1

5 5輸出樣例

no

#include

#include

using

namespace std;

int n;

int maze[6]

[6][

2];//儲存迷宮的牆

struct node

;//無效條件:越界、重複、被抓

node start,target;

queue q1;

int used[6]

[6][

6][6

];//判重

int walk[4]

[2]=

//返回人走一格的新位置座標

;void

input()

;//輸入函式

bool

bfs();

node moveto

(node cur,

int i)

;//返回節點cur擴充套件的下乙個節點next

bool

iswall

(int x,

int y,

int i)

;//判斷方格[x,y]方向是否是牆

intmain()

else

return0;

}void

input()

//最後三行

cin>>start.mx>>start.my;

cin>>start.px>>start.py;

cin>>target.px>>target.py;

//初始節點標記併入隊

used[start.mx]

[start.my]

[start.px]

[start.py]=1

; q1.

push

(start);}

bool

bfs(

)else

//未到達目標則入隊}}

}return

false

;//所有情況都不能到達目標,返回false

}//該函式返回節點cur擴充套件的新節點next

//人要向i方向走一步,木乃伊要向人靠近兩步

//節點無效條件:人越界、人撞牆、人被木乃伊抓到、節點next重複

node moveto

(node cur,

int i)

//木乃伊走兩步

next.mx=cur.mx;

next.my=cur.my;

int step=2;

while

(step--

)else

if(next.py!iswall

(next.mx, next.my,0)

)//若列數相等,則再到達同一行

else

if(next.py==next.my)

else

if(next.px!iswall

(next.mx, next.my,3)

)//若同行同列,則人被抓住,此節點無效,直接返回

else

if(next.px==next.mx)}}

//人和木乃伊都走完了

if(used[next.mx]

[next.my]

[next.px]

[next.py]

)//若節點重複,則節點無效

else

return next;

}//判斷方格[x,y]方向是否是牆

bool

iswall

(int x,

int y,

int i)

return-1

;//返回-1代表i值錯誤

}

NOJ1130 演算法實驗三 polygon

時限 1000ms 記憶體限制 10000k 總時限 3000ms 描述在乙個周長為10000的圓上等距分布著n個點,即這n個點是乙個正n邊形的頂點。現在要另加m個點到圓上,新加的m個點可以任意選擇位置 可以與原有的點重合 然後將這n m個點中的一些點延圓周移動,最終使n m個點均勻分布,即在乙個正...

NOJ1043 演算法實驗三 跳馬

描述 在西洋棋中,馬的走法與中國象棋類似,即俗話說的 馬走日 下圖所示即西洋棋中馬 k 在一步能到達的格仔 其中黑色的格仔是能到達的位置 現有一200 200大小的西洋棋棋盤,棋盤中僅有乙個馬,給定馬的當前位置 s 和目標位置 t 求出馬最少需要多少跳才能從當前位置到達目標位置。輸入 本題包含多個測...

NOJ1084 演算法實驗四 花生公尺(三)

時限 1000ms 記憶體限制 10000k 總時限 3000ms 描述五一長假第三天,tom和jerry在倉庫散步的時候又發現了一堆花生公尺 倉庫,又見倉庫 這次tom制定分花生公尺規則如下 1 tom和jerry輪流從堆中取出k粒花生公尺吃掉 2 第一次取花生公尺的人只能取一粒,以後取花生公尺的...