測試次數

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;
}

 

發佈了106 篇原創文章 · 獲贊 136 · 訪問量 7萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章