雷德利斯科特導演在為最新的異形三部曲終章《覺醒》徵集主演,達達學長在宿舍**《普羅公尺修斯》的時候看到劇中的主演們乙個又乙個成為異形的盤中餐,達達學長認為他們太笨了,決定親自上陣會一會異形
斯科特導演為了考驗主角的智慧型,將達達學長扔到了一艘名叫小學期的陰森的太空船中並派生化人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有關的知識了,這大概是程式設計的魅力吧!其實...