消滅終極BOSS 華為機試題

2021-07-11 09:54:24 字數 1478 閱讀 5813

昨天參加了華為的機試,兩個小時,三大題。

第一題很簡單,長度為n的陣列,將後m個數字移到前面,前面的n-m個數字移到後面,然後輸出陣列裡面前m個、後m個數的和。

第二題是輸入員工的姓名,若干次的打卡時間,輸出打卡的狀態(包括缺席、打卡不正常、早退、遲到、正常),以及工作時間。不難,只是情況比較多,所以做起來比較花費時間。

第一題、第二題花了太多不該花的時間(還是**寫太少),導致第三題當時沒來得及好好做。過後思考了下,其實並不算難,只是要考慮幾種情況。

第三題題目如下。(圖偷來的,侵刪)

思路如下:

首先計算出消滅boss需要多少輪,以及被boss消滅需要多少輪,如果掛之前能夠消滅boss,則輸出消滅boss的回合數,否則輸出-1。

消滅boss回合數的計算步驟:

1.如果魔法量大於等於10,則發動魔法攻擊,直到boss被滅或者魔法量不夠。若boss被消滅,則不需執行下面步驟,已經得到回合數。

2.若剩餘魔法量為6、7、8、9,則需要一輪魔法恢復則可進行魔法攻擊,即兩輪造成60點的傷害;普通攻擊兩輪只能造成34點傷害;因此當boss剩餘hp大於34時,發動魔法攻擊;

3.若剩餘魔法量為2、3、4、5,則需要兩輪輪魔法恢復則可進行魔法攻擊,即三輪造成60點的傷害;普通攻擊則三輪只能造成51點傷害;因此若此時boss剩餘hp大於51時,發動魔法攻擊。

4.五輪魔法恢復可以得到20點魔法量,可發動2輪魔法攻擊,總共七回合,造成120點傷害;而普通攻擊七回合造成119點傷害;因此,當boss的hp大於等於120時,使用5+2回合造成120點傷害。

3.boss的hp不足120點時,則發動普通攻擊知道消滅boss即可。

**如下:

#includeusing namespace std;

int main()

//若剩餘魔法量為6、7、8、9,當boss剩餘hp大於34時,發動魔法攻擊;

if(hp2 > 34 && mp >= 6)

//若剩餘魔法量為2、3、4、5,boss剩餘hp大於51時,發動魔法攻擊。

while(hp2 > 51 && mp >= 2)

//魔法值不夠時,如果此時boss剩餘血大於等於120,則5輪恢復魔法,2輪發起魔法進攻

while(hp2 >=120)

//剩餘情況則普通攻擊

while(hp2>0)

//計算多少輪被殺死

int bekilled = 0;

while(hp1 > 0)

if(hp1 >0)

} //是否能消滅boss

if(killboss<=bekilled)

cout << killboss << endl;

else

cout << -1 << endl;

} return 0;

}

華為筆試題 (消滅終極boss)

玩家殺boss,玩家有普通攻擊和魔法攻擊 boss 有普通攻擊和暴擊 求玩家戰勝boss的最小回合數 include include void fight int a 3 int fight time,int win else a 0 10 a 2 120 if atmp 100000 atmp 0...

華為機試題

今天去華為機試,感覺是再謹慎都不為過啊!zc前一天晚上還跟我強調了判空,記憶體釋放。前兩題都是基本題,後面一題不會。1 輸入兩個數 反轉相加的和輸出。2 三天打漁兩天曬網 從1990 年1月1日開始 打漁輸出fishing 曬網輸出sleeping 我因為printf的是fishing sleepi...

華為機試題

通過鍵盤輸入一串小寫字母 a z 組成的字串。請編寫乙個字串壓縮程式,將字串中連續出席的重複字母進行壓縮,並輸出壓縮後的字串。壓縮規則 1.僅壓縮連續重複出現的字元。比如字串 abcbc 由於無連續重複字元,壓縮後的字串還是 abcbc 2.壓縮欄位的格式為 字元重複的次數 字元 例如 字串 yyy...