NOJ1044 獨輪車 廣搜

2021-08-29 01:24:19 字數 1884 閱讀 1316

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

描述獨輪車的輪子上有紅、黃、藍、白、綠(依順時針序)5種顏色,在乙個如下圖所示的20*20的迷宮內每走乙個格仔,輪子上的顏色變化一次。獨輪車只能向前推或在原地轉向。每走一格或原地轉向90度均消耗乙個單位時間。現給定乙個起點(s)和乙個終點(t),求獨輪車以輪子上的指定顏色到達終點所需的最短時間。

輸入本題包含乙個測例。測例中分別用乙個大寫字母表示方向和輪子的顏色,其對應關係為:e-東、s-南、w-西、n-北;r-紅、y-黃、b-藍、w-白、g-綠。在測試資料的第一行有以空格分隔的兩個整數和兩個大寫字母,分別表示起點的座標s(x,y)、輪子的顏色和開始的方向,第二行有以空格分隔的兩個整數和乙個大寫字母,表示終點的座標t(x,y)和到達終點時輪子的顏色,從第三行開始的20行每行內包含20個字元,表示迷宮的狀態。其中'x'表示建築物,'.'表示路.

輸出在單獨的一行內輸出乙個整數,即滿足題目要求的最短時間。

輸入樣例

3 4 r n

15 17 y

******************xx

x.x...******......xx

x.x.x.....x..***x..x

x.******x.******xx.x

x.x.xx....x........x

x...***xx.x.xx.x.***

x.x.xx....x.x..x.x.x

x.x.x..xx...***x.***

x.x.xx.xx.x....x.x.x

x.x....xx.x.xx.x.x.x

x.x.x.***xx.xx.x.***

x.x.x.***xx....x...x

x.x.......x.xx...x.x

x.***.***.x.******xx

x.....xx.......x...x

***xx....x.******x.x

x..******x.***.***.x

x.xx...........x...x

x..x.***x.***x...***

******************xx

輸出樣例

廣搜高階版。每個狀態對應四個引數:x,y,顏色,方向。所以用四維陣列記錄狀態。

#include #include #include #include using namespace std;

int dx[4]=;

int dy[4]=;

int gx,gy,gc;

bool used[20][20][4][5];

struct node

;node now,next;

bool judge()

int bfs()

if(judge())//前進

next.x=now.x;

next.y=now.y;

next.color=now.color;

next.dir=(now.dir+1)%4;//右轉

if(used[next.x][next.y][next.dir][next.color]==false)

next.dir=(now.dir+3)%4;//左轉

if(used[next.x][next.y][next.dir][next.color]==false)

}return 0;

}int main()

switch(cc)

cin>>gx>>gy;

getchar();

cin>>cc;

switch(cc)

for(int i=0;i<20;i++)

printf("%d\n",bfs());

return 0;

}

演算法練習 NOJ 1044 獨輪車

時限 1000ms 記憶體限制 10000k 總時限 3000ms 描述 獨輪車的輪子上有紅 黃 藍 白 綠 依順時針序 5種顏色,在乙個如下圖所示的20 20的迷宮內每走乙個格仔,輪子上的顏色變化一次。獨輪車只能向前推或在原地轉向。每走一格或原地轉向90度均消耗乙個單位時間。現給定乙個起點 s 和...

1044 火星數字

火星人是以13進製計數的 例如地球人的數字 29 翻譯成火星文就是 hel mar 而火星文 elo nov 對應地球數字 115 為了方便交流,請你編寫程式實現地球和火星數字之間的互譯。輸入格式 輸入第一行給出乙個正整數n 100 隨後n行,每行給出乙個 0,169 區間內的數字 或者是地球文,或...

1044 火星數字

時間限制 400 ms 記憶體限制 65536 kb 長度限制 8000 b 判題程式 standard 作者 chen,yue 火星人是以13進製計數的 例如地球人的數字 29 翻譯成火星文就是 hel mar 而火星文 elo nov 對應地球數字 115 為了方便交流,請你編寫程式實現地球和火...