x星球的居民脾氣不太好,但好在他們生氣的時候唯一的異常舉動是:摔手機。
各大廠商也就紛紛推出各種耐摔型手機。x星球的質監局規定了手機必須經過耐摔測試
並且評定出一個耐摔指數來,之後才允許上市流通。
x星球有很多高聳入雲的高塔,剛好可以用來做耐摔測試。塔的每一層高度都是一樣的
與地球上稍有不同的是,他們的第一層不是地面,而是相當於我們的2樓。
如果手機從第7層扔下去沒摔壞,但第8層摔壞了,則手機耐摔指數=7。
特別地,如果手機從第1層扔下去就壞了,則耐摔指數=0。
如果到了塔的最高層第n層扔沒摔壞,則耐摔指數=n
爲了減少測試次數,從每個廠家抽樣3部手機參加測試。
某次測試的塔高爲1000層,如果我們總是採用最佳策略
在最壞的運氣下最多需要測試多少次才能確定手機的耐摔指數呢?
請填寫這個最多測試次數。
分析:dp,公式如代碼
#include<bits/stdc++.h>
using namespace std;
int dp[5][1005];
void solve(int phone, int floor)
{
for (int i = 1; i <= phone; i++)
{
for (int j = 1; j <= floor; j++)
dp[i][j] = j; //i部手機在j層摔壞的最壞次數爲j次
}
for (int i = 2; i <= phone; i++)
{
for (int j = 1; j <= floor; j++)
{
for (int k = 1; k < j; k++) //從第k層摔下
dp[i][j] = min(dp[i][j], max(dp[i - 1][k - 1], dp[i][j - k]) + 1);
}
}
}
int main()
{
solve(3, 1000);
cout << dp[3][1000] << endl;
return 0;
}