小學期 異形 達達學長的生死逃亡

2021-08-09 09:14:51 字數 2581 閱讀 4128

雷德利斯科特導演在為最新的異形三部曲終章《覺醒》徵集主演,達達學長在宿舍**《普羅公尺修斯》的時候看到劇中的主演們乙個又乙個成為異形的盤中餐,達達學長認為他們太笨了,決定親自上陣會一會異形

斯科特導演為了考驗主角的智慧型,將達達學長扔到了一艘名叫小學期的陰森的太空船中並派生化人bluesky去幫助他.萬萬沒想到的是,生化人bluesky叛變了,達達學長驚慌失措的開始在太空船中逃亡.

達達學長的情況現在萬分危機,前面未知的船艙中遊蕩著乙隻異形,後面還有生化人bluesky的追擊.

因為生化人bluesky的追擊,達達學長絕對不能走回頭路也不能在原地停留一刻,現在達達學長呼叫你來幫助他,因為只有你知道整個太空船的構造和異形的位置.

(為了處理方便)現在你已知太空船是乙個高hight,寬row,長col的長方體,(為了簡單起見)船中遊蕩著1只異形,你擁有的先進的動作感知器已經捕捉到了異形的運動規律(異形穿牆還不是分分鐘的事情)和異形的感覺範圍,現在請你幫助達達學長找出一條逃生的路

達達學長每次最快只能走一格,異形也是.

情況萬分危機,現在達達學長只想知道他是否可以倖存(因為生化人bluesky的追殺,達達學長只會走前往逃生艙的最短路徑不會兜圈子),如果倖存輸出需要多長時間才可以到達逃生艙,如果不能倖存輸出-1

1. 首先輸入船高h,船寬r,船長c三個整數n, n大於等於3小於等於30

2. 之後按序輸入h個二維地圖,每乙個二維地圖都是代表太空船的一層,地圖中.符號代表一格通道,#代表船身,s代表達達學長當前的位置,e代表太空船的逃生艙的位置

3. 之後輸入兩個整數a,b , 其中a代表異形的移動的位置數目,b代表異形的感知範圍

4. 之後輸入a行資料,每一行存在3個整數代表異形活動的位置的座標,異形按照輸入的順序做有規律的來回移動

5. 達達學長逃亡的過程中不能出現在異形的感覺範圍內,否則會立刻被追殺

6. 輸入包含多組用例,最後一組用例用0 0 0結尾並且不做任何處理

如果達達學長可以逃亡成功輸出達達學長到達逃生艙的最短時間n,

輸出格式 : escaped in n minute(s).

如果達達學長不能逃亡成功請輸出-1

ps :

1. 異形的感知是6個方向,所謂的感知範圍表示的是異形在某乙個方向上的視覺的延伸

2. a大小是沒有具體限制的,太空船多大,a就會有多大a的最小限制是1

3. 異形有規律的來回移動

(1,1)->(1,2)->(1,3)->(1,2)->(1,1)

測試用例:

輸入:

3 4 5

.s...

.###.

.##..

###.#

#####

#####

##.##

##...

#####

#####

#.###

####e

4 01 2 2

1 3 2

1 3 3

1 3 4

1 3 3

s###e#

###1 2

0 0 0

0 0 0

輸出:

-1

-1

題解:最開始有個地方搞錯了就是,異性座標為1,1,1時是在第2層,第2行,第2列處,也就是0為第一層/行/列。

然後這題就是一道三維bfs,用乙個dis記錄每個點到s距離,初始化為inf,如果到達乙個點的時候正好在異形的範圍內,那麼終止這條路徑,把這個點記為#,最終看dis[x][y][z]是否為乙個整數而不是inf,判斷能不能走出去。

**:

#include#includechar map[31][31][31];

int h,r,c,a,b;

typedef structnode;

node que[30000],pos[30000];

node s,e;

int dis[31][31][31];

short dx=;

short dy=;

short dh=;

int inf=0x3f3f3f3f;

int main()

node poss=pos[intex];

if((poss.h==hh&&poss.x==xx&&yy<=poss.y+b&&yy>=poss.y-b)||(poss.h==hh&&poss.y==yy&&xx<=poss.x+b&&xx>=poss.x-b)||(poss.y==yy&&poss.x==xx&&hh<=poss.h+b&&hh>=poss.h-b))

continue;

map[hh][xx][yy]='#';

dis[hh][xx][yy]=dis[now.h][now.x][now.y]+1;

node temp;

temp.x=xx,temp.y=yy,temp.h=hh;

que[p2++]=temp;

}}

if(dis[e.h][e.x][e.y]==inf)

printf("-1\n");

else printf("escaped in %d minute(s).\n",dis[e.h][e.x][e.y]);

} return 0;

}

小學期 BlueSky學長與友人帳

多組用例,每組用例給出4個小於10的正整數a,b,c,d,最終以0 0 0 0結束。最後一行不需要處理。對於每組用例輸出一行,如果bluesky學長能成功歸還名字,輸出 yes 否則輸出 no 測試用例 輸入 5 5 5 1 1 1 4 2 0 0 0 0 輸出 yes no 題解 24點問題,網上...

小學期 有吃的!

婦添小有乙個很厲害的技能 發現吃的!如果有好吃的東西,不論多遠,只要一聞就能知道在 這天他剛剛在程設rejudge完,忽然鼻子一抽 有吃的!他決定馬上趕去吃這麼好吃的東西。語文男為了考驗婦添小的品味,在路中間放了很多饅頭,看他會不會餓的先吃饅頭。婦添小當然不會讓這種雕蟲小計得逞!為了保持自己的品味,...

ACM的小學期結束了。。

乙個月的時間飛快地過去了,在實驗中心的小學期實訓也進入了尾聲了。回首這乙個月時光,自己在 oj上收穫了許多平時都無法獲取的新東西。最開始剛進來的時候,自己只是抱著對這學期學的資料結構學得不好,來補補拉下的知識的想法,後來,自己已經開始願意掌握更多與 acm有關的知識了,這大概是程式設計的魅力吧!其實...