藍橋杯摔手機測試次數

2021-10-08 04:50:31 字數 1244 閱讀 4512

題目:

x星球的居民脾氣不太好,但好在他們生氣的時候唯一的異常舉動是:摔手機。

各大廠商也就紛紛推出各種耐摔型手機。x星球的質監局規定了手機必須經過耐摔測試,並且評定出乙個耐摔指數來,之後才允許上市流通。

x星球有很多高聳入雲的高塔,剛好可以用來做耐摔測試。塔的每一層高度都是一樣的,與地球上稍有不同的是,他們的第一層不是地面,而是相當於我們的2樓。

如果手機從第7層扔下去沒摔壞,但第8層摔壞了,則手機耐摔指數=7。

特別地,如果手機從第1層扔下去就壞了,則耐摔指數=0。

如果到了塔的最高層第n層扔沒摔壞,則耐摔指數=n

為了減少測試次數,從每個廠家抽樣3部手機參加測試。

某次測試的塔高為1000層,如果我們總是採用最佳策略,在最壞的運氣下最多需要測試多少次才能確定手機的耐摔指數呢?

請填寫這個最多測試次數。

注意:需要填寫的是乙個整數,不要填寫任何多餘內容。

解題思路:

n部手機測試i層,要測試m層的時候必須要從第1~m層去測試,用j表示1到m的層數。

每一層對應2個結果,好:剩下n部手機、剩m-j層沒測;壞:剩下n-1部手機、剩j-1層沒測 。

因為運氣最差,所有選取每一層中測試次數最多的結果作為該層的測試次數。

策略最佳,從1~m層中選取測試次數最少的作為結果 。

**:

#include

#include

#include

using

namespace std;

const

int n =

1000

;int f1[n+1]

,f2[n+1]

,f3[n+1]

;//分別表示1、2、3部手機在運氣最差,最佳策略的情況以及n層測試中的耐摔指數

intmain()

//2部手機,對應好和壞,以及最佳策略

for(

int i =

1;i <= n;i++

) f2[i]

= ans;

}//3部手機,對應好和壞,以及最佳策略

for(

int i =

1;i <= n;i++

) f3[i]

= ans;

}//輸出3部手機1000層的測試次數

cout << f3[n]

<< endl;

return0;

}

本題答案:19

藍橋杯 摔手機 耐摔指數

x星球的居民脾氣不太好,但好在他們生氣的時候唯一的異常舉動是 摔手機。各大廠商也就紛紛推出各種耐摔型手機。x星球的質監局規定了手機必須經過耐摔測試,並且評定出乙個耐摔指數來,之後才允許上市流通。x星球有很多高聳入雲的高塔,剛好可以用來做耐摔測試。塔的每一層高度都是一樣的,與地球上稍有不同的是,他們的...

藍橋杯 測試次數

x星球的居民脾氣不太好,但好在他們生氣的時候唯一的異常舉動是 摔手機。各大廠商也就紛紛推出各種耐摔型手機。x星球的質監局規定了手機必須經過耐摔測試,並且評定出乙個耐摔指數來,之後才允許上市流通。x星球有很多高聳入雲的高塔,剛好可以用來做耐摔測試。塔的每一層高度都是一樣的,與地球上稍有不同的是,他們的...

摔手機 藍橋 Python

dp 0,0,0,0 for in range 1001 只有乙個手機時測試n樓層時需要的測試次數 for i in range 1 1001 dp i 1 i 無論多少個手機 第一層所需要的測試次數永遠是1 for i in range len dp 1 dp 1 i 1 print dp 1 1...