前往
大廳
主題

ZeroJudge - f787: 宇辰的閃電 解題心得

Not In My Back Yard | 2021-05-19 00:00:06 | 巴幣 0 | 人氣 343

題目連結:


題目大意:
輸入第一列給定兩正整數 N 、 S (S ≦ N ≦ 10000),代表有 N 位玩家,且宇辰想要用閃電攻擊第 S 位玩家(索引值從 1 開始)。

接著有 N 列每列依序給定:
一:一個字串(由大寫字母組成,長度 ≦ 10),代表玩家的名字、
二:一個正整數(≦ 10),代表玩家的血量、
三:另一個正整數(≦ 5),代表玩家被閃電攻擊時的承受傷害、
四:若干個字串,其與玩家血量等量,代表著玩家的道具、
五:一正整數(≦ N),代表閃電下一個連鎖到的玩家之編號。

當閃電攻擊玩家 S 時,閃電會連鎖下去,直到有玩家先前已被閃電攻擊過。當玩家被閃電攻擊時,會失去承受傷害當量的血量。而因為血量值會限制道具數,所以道具也會消失(從結尾開始消失)。

請根據閃電攻擊到的玩家順序,請輸出他們的名字、剩餘血量以及剩餘道具。如果玩家在攻擊後死亡,則輸出該玩家名字後輸出「 dead.」。



範例輸入:
5 2
HAOYU 2 1 FROG LEG 2
JAMIN 3 3 TOOTH RACKET WHIP 3
TZUCHANG 5 3 PIMPLE BLEMISH BLACKHEAD ZIT ACNE 1
YUNSHAN 1 5 SPHINCTER 5
WEIXIAN 2 1 LIHAMENT LEG 4


範例輸出:
JAMIN dead.
TZUCHANG 2 PIMPLE BLEMISH
HAOYU 1 FROG


解題思維:
模擬即可。

使用一個結構(Struct)將所有玩家資訊存起來並且加上一個布林變數 isShocked 用以表示該玩家有無被閃電攻擊過(有為 true;反之為 false。預設為 false)。

然後從玩家 S 開始。每次先檢查該玩家的 isShocked ,如果為 true 則停止連鎖;若為 false,則將血量扣去承受傷害值。

如果血量 ≦ 0,則代表該名玩家死亡,則輸出其名字以及「 dead.」之訊息;反之,輸出名字與剩餘血量以及剩下的物品(與剩餘血量值等量,從前面開始輸出)。




此次分享到此為止,如有任何更加簡潔的想法或是有說明不清楚之地方,也煩請各位大大撥冗討論。

創作回應

相關創作

更多創作