設計演算法1

2021-07-06 11:27:08 字數 520 閱讀 7565

題目:

有一幢100樓的大廈,兩部手機,讓你設計一種演算法確切地知道這部手機在第幾樓摔下會壞

分析:第一步手機是用來決定在0-100層之間需要劃分幾個區間

第二步手機是用來在已發現可以導致手機摔壞的區間內一級一級往上加樓層已具體測試是哪一層的工具。

假設第一步手機劃分的區間為a個,每個區間包含的層數為b。

則可以得出a*b=100。

所謂的最優化,既是讓測試的次數盡量最小,即讓a+b+1次數盡量最小,也就是讓a+b最小。

現在就簡單了,轉化為乙個數學題。已知a*b=100,問當a+b取最小值時,a=?,b=?。

具體做法就是:

將一部手機從10樓扔下,如果壞,則拿第二部手機從一樓開始,逐層往上試,則實驗最大次數為10+1=11次。

如果沒壞,則將第一部手機從20樓仍下,如果壞,則將第二部手機從11樓開始,逐層往上試,實驗最大次數為10+2=12次。

以此類推,當第一部手機從第90層扔下時,如果壞,則從81曾逐層往上,如不壞,也不用從第一百層扔了,從91層開始吧。

設計演算法1

題目 有一幢的大廈,兩部手機,讓你設計一種演算法確切地知道這部手機在第幾樓摔下會壞 分析 第一步手機是用來決定在0 100層之間需要劃分幾個區間 第二步手機是用來在已發現可以導致手機摔壞的區間內一級一級往上加樓層已具體測試是哪一層的工具。假設第一步手機劃分的區間為a個,每個區間包含的層數為b。則可以...

計算理論與演算法分析設計 1 A B問題

計算最多20010位十進位制正整數a和b的乘積a b。1259 8由於本題要計算最多20010位十進位制正整數a和b的乘積a b,使用常規的計算方法顯然不可取。正確的解法是使用高精度計算。由於小學期的時候寫過一道題是 calc 那道題涉及到高精度加法 減法 乘法,所以偷了個懶,直接把那個程式的乘法部...

初步設計演算法

兩道題目 1.編寫乙個函式,接受兩個字串指標引數。如果第二個字串被包含在第乙個字串中,函式就返回被包含的字串開始的位址,否則函式返回空指標。2.編寫乙個函式,引數為乙個字串,函式刪除字串中的空格。並顯示結果。分析 第一道題目中顯然得有雙重遍歷,第一重是對第乙個字串依次遍歷 第二重是對針對第一字串中的...