華為校招筆試:洞穴逃生

題目

原文

精靈王子愛好冒險,在一次探險歷程中,他進入了一個神秘的山洞。在洞穴深處,精靈王子不小心觸動了洞穴內暗藏的機關,整個洞穴很快塌陷,精靈王子必須晶塊逃離洞穴。精靈王子的跑步速度為17m/s,以這樣的速度可能是無法逃出洞穴的。慶幸的是精靈王子擁有閃爍法術,可在1s內移動60m,不過每次使用閃爍法術都會消耗魔法值10點。精靈王子的魔法值恢復的速度為4點/s,只有處在原地休息狀態時才能恢復。
現在已知精靈王子的魔法初始值M,他所在洞穴中的位置與洞口出口之間的距離S,距離洞穴坍塌的時間T。你的任務是寫一個程序幫助精靈王子計算如何在最短的時間內逃離洞穴。若能逃出,輸出"Yes",并輸出逃出所有的最短時間;若不能逃出,則輸出"No",同時輸出精靈王子在剩下的時間內能走的最遠距離。注意字母大小寫。注意:精靈王子跑步、閃爍或休息活動均以秒(s)為單位。且每次活動的持續時間為整數秒。距離的單位(m)。

分析

一眼望過去都是密密麻麻的文字,看著很嚇人。沒關系,我們把對我們有用的信息提煉出來就好了:

  • 跑步速度:17m/s,閃爍速度:60m/s
  • 閃爍需要消耗10點魔法值,魔法值的恢復速度為4點/s,恢復時需要在原地休息
  • 秒(s)為原子單位,也就是說不存在零點幾秒

通過分析我們可以得出:

  • 如果魔法充足,優先使用閃爍
  • 如果魔法不足,則分情況考慮(如下表):
    • 如果距離 >= 60m且 <= 68m,跑步更劃算
    • 如果距離 <= 34m,跑步更劃算
    • 其他情況則閃爍更劃算
      距離=34,60m時,跑步和閃爍是等效的(都能逃出洞口),為了簡化問題,統一使用跑步。
魔法值 閃爍 跑步
0、1 (3+1)s - 60m 4s - 68m
2、3、4、5 (2+1)s - 60m 3s - 51m
6、7、8、9 (1+1)s - 60m 2s - 34m
1s - 17m
 使用閃爍需要的時間 = 恢復時間 + 使用時間

參考答案

代碼

 import java.util.Scanner;


public class Main {

    public static void main(String[] args) {
        int m, s, t;
        Scanner cin = new Scanner(System.in);
        m = cin.nextInt();
        s = cin.nextInt();
        t = cin.nextInt();
        Main test = new Main();
        test.start(m, s, t);
    }

    public void start(int m, int s, int t) {
        //記錄初始距離
        int l = s;
        int second = 0;
        while (s > 0) {
            //如果魔法大于10 就使用魔法
            while (m >= 10) {
                second++;
                if (second > t) {
                    System.out.println("No " + (l - s));
                    return;
                }
                m -= 10;
                s -= 60;
                if (s <= 0) {
                    System.out.println("Yes " + second);
                    return;
                }
            }
            //跑
            if (s >= 60 && s <= 68) {
                second += 4;
                if (second > t) {
                    System.out.println("No " + (l - s));
                    return;
                }
                s -= 17 * 4;
            } else if (s <= 34) {
                second++;
                if (second > t) {
                    System.out.println("No " + (l - s));
                    return;
                }
                s -= 17;
            } else {
                //休息
                int tem = 0;
                while (m < 10) {
                    second++;
                    //嘗試跑
                    tem += 17;
                    if (second >= t) {
                        System.out.println("No " + ((l - s) + tem));
                        return;
                    }
                    if (tem > s){
                        System.out.println("Yes " + second);
                        return;
                    }
                    m += 4;
                }
            }
        }
        System.out.println("Yes " + second);
    }

}

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 229,836評論 6 540
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 99,275評論 3 428
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事?!?“怎么了?”我有些...
    開封第一講書人閱讀 177,904評論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,633評論 1 317
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,368評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,736評論 1 328
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,740評論 3 446
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,919評論 0 289
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,481評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,235評論 3 358
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,427評論 1 374
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,968評論 5 363
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,656評論 3 348
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,055評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,348評論 1 294
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,160評論 3 398
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,380評論 2 379

推薦閱讀更多精彩內容

  • 夏末,在五臺山的深山中,有一片少有人踏入的森林。林中的樹木遮天蔽日,原本原本炙熱的陽關都被樹葉擋住,異常的涼爽。林...
    冰月光輝閱讀 14,036評論 0 14
  • 本文將天賦點換算成游戲金幣來做一個純粹的價值分析,而這樣分析的缺點也非常明顯,裝備可以有替代品,但天賦點卻不占格子...
    月輪閱讀 6,317評論 1 10
  • 歷來異界小說層出不窮,其中異界也千差萬別,有很多侮辱智商的東西是在胡言亂語,甚至自相矛盾,現在,就跟大家分享一下真...
    空白_7閱讀 25,639評論 14 43
  • 高野 一個人的一生無論走得再遠,都走不出養育他的故鄉和村莊。當一個作家或者詩人曾把鮮血和熱淚揮灑在那片養育他的熱土...
    鷹鷹兒閱讀 573評論 0 2
  • 對于上學的孩子來說,學習是其第一任務,可除了學習,是否還應該關注一下孩子其它方面呢。 雖然作為父母關注孩子的學習,...
    一生所求8閱讀 273評論 0 0