題目:
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...