nyoj 999 師傅又被妖怪抓走了

2022-09-08 08:27:12 字數 2020 閱讀 4325

時間限制:1000 ms  |  記憶體限制:65535 kb

難度:3

描述

話說唐僧復得了孫行者,師徒們一心同體,共詣西方。自寶象國救了公主,承君臣送出城西,沿路饑餐渴飲,

悟空便為師傅去化齋,等悟空回來,悟淨慌慌張張的對悟空說:「不好了,不好了」,還沒等悟淨說完,悟空說:「師傅又被妖怪抓走了」,悟淨:「no!」 ,悟空一臉茫然,悟淨:「師傅和二師兄都被妖怪抓走了」。悟空(暈!)。為了防止悟空救人,妖怪先把唐憎和八戒分別藏起來,如果悟空在t分鐘之後還沒找到人,那必定是被妖怪吃掉了。假設悟空在乙個n行m列的矩陣內,悟空在每一分鐘可以走到上,下,左,右的其中的乙個可以走的位置,每次只能走一步。我們把發現定義為可以直接看到對方,

也就是說兩個人在同一行或者同一列,並且中間沒有障礙物或者沒有其他人就可以看到對方。

輸入

有多組測試資料,每組首先是三個正整數n , m (3<=n,m<=100), t,(0<=t<=100) 分別代表行數,列數,規定的時間。接下來n 行,每行 m 個字元。其中』 s 』 代表悟空的位置,』 d 』代表師傅位置,』 e 』代表八戒的位置。並且保證都只有乙個. 』 x 』代表牆 ,』 . 』代表空地 .

輸出

每組先輸出一行case c:(c表示當前的組數,從1開始計數);

接下來一行,如果悟空可以在規定時間內找到兩人,則輸出最少需要的時間,否則輸出-1。

樣例輸入

5 6 3

xxd...

....e.

....x.

....s.

......

5 6 3

xdx...

....e.

......

....s.

......

5 6 8

xxdx..

.xex..

......

....s.

......

樣例輸出

case 1:

-1 case 2:

3 case 3:

-1

#include#include#include#includeusing namespace std;

int dir[4][2]=;

int visit[105][105][4];

char map[105][105];

int n,m,t,ans;

struct node;

//狀態壓縮,將d點和e點所在的行列的『.』擴充套件為d和e,

// 把師傅所在行和列標記為 1 狀態 'd'

// 二師兄所在行和列標記為 2 狀態 'e'

// 如果師傅和二師兄在同一行或同一列,重合的部分標記為3狀態 'x'

// 要想把師傅和二師兄都找到:

// 要麼先找到師傅,再找到二師兄;

// 要麼先找到二師兄,再找到師傅;

// 要麼同時找到

int st_solve(char x,int st)//處理當前所走的狀態

bool check(int x,int y) //判斷是否能走,可以把師傅或二師兄看做牆不能走

char solve(char x,int ok) //師傅或二師兄所在行和列標記 有多不同

//狀態壓縮

void isit(int x,int y,int ok)//處理師傅或二師兄所在的行和列

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

} }}

int main()

} }

for(int i=0;i}

ans=10005;

bfs(s);

printf("case %d:\n",tcase++);

if(ans<=t)

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

else

puts("-1");

} return 0;

}

nyoj 999 師傅又被妖怪抓走了

時間限制 1000 ms 記憶體限制 65535 kb 難度 3 描述 話說唐僧復得了孫行者,師徒們一心同體,共詣西方。自寶象國救了公主,承君臣送出城西,沿路饑餐渴飲,悟空便為師傅去化齋,等悟空回來,悟淨慌慌張張的對悟空說 不好了,不好了 還沒等悟淨說完,悟空說 師傅又被妖怪抓走了 悟淨 no!悟空...

NYOJ 師傅又被妖怪抓走了 雙向BFS

時間限制 1000 ms 記憶體限制 65535 kb 難度 3 描述 話說唐僧復得了孫行者,師徒們一心同體,共詣西方。自寶象國救了公主,承君臣送出城西,沿路饑餐渴飲,悟空便為師傅去化齋,等悟空回來,悟淨慌慌張張的對悟空說 不好了,不好了 還沒等悟淨說完,悟空說 師傅又被妖怪抓走了 悟淨 no!悟空...

搞笑決戰水源之巔收藏六 師傅

六 師傅 我夢到了師傅。我之所以知道是個夢,是因為只有夢裡他的容貌才能看得下去。我們一起在水源潭邊釣魚。師傅屁股底下坐著三層小山羊皮墊子,而我站在雪裡。師傅啊,這麼大冷的天,你說咱能釣著魚嗎?我問。傻孩子,跟你說過多少次了。做人呢,要學會從他人的角度來考慮問題。乙個刺客最最重要的一點就是以己及人。你...