1. 程式人生 > >2017年完美世界校招筆試題,從n層大樓往下扔m顆玻璃珠確定珠子破碎的臨界樓層

2017年完美世界校招筆試題,從n層大樓往下扔m顆玻璃珠確定珠子破碎的臨界樓層

這道題可以搜尋google扔玻璃珠筆試題以及騰訊2017的校招筆試也有一道這樣的題,不同的是,以上的題中只是用了兩顆玻璃珠,而這裡是m顆玻璃珠;

不過,同樣是扔珠子,所以思路都是一樣,只不過變得更有普適性;

以下是我的思路:

假設我有m顆珠子,然後有n層樓,至少要扔a(m, n)次
那麼隨機扔到k層,有兩個結果:
 * 珠子碎了:從1到k-1層繼續扔,結果是a(m-1, k-1);
 * 珠子沒碎:從k+1到n層繼續扔,結果是a(m, n-k);

那麼max{a(m-1, k-1)+1, a(m, n-k)+1}就是從第k層樓扔玻璃珠需要試的最大次數

所以a(m,n) = min{max{a(m-1, k-1)+1, a(m, n-k)+1}for(1<=k<=n)}
 * 初始條件:a(m, 0) = 0, a(m, 1) = 1; a(0, n) = 0, a(1, n) = n

使用Java實現:

private static int getMin(int m, int n) {
	int[][] dp = new int[m+1][n+1];
	// -----初始化變數-----
	// m顆珠子
	for (int i = 0; i <= m; i++) {
		// n層樓
		for (int j = 0; j <= n; j++) {
			if (i == 0 || j == 0) {
				dp[i][j] = 0;
			} else if (i == 1) {
				dp[i][j] = j;
			} else if (j == 1){
				dp[i][j] = 1;
			}
		}
	}
	// -----迭代-----
	// m顆珠子
	for (int i = 2; i <= m; i++) {
		// n層樓
		for (int j = 2; j <= n; j++) {
			int min = Integer.MAX_VALUE;
			for (int k = 1; k <= j; k++) {
				int max = Math.max(dp[i-1][k-1]+1, dp[i][j-k]+1);
				if (max < min) {
					min = max;
				}
			}
			dp[i][j] = min;
		}
	}
	return dp[m][n];
}

想得比較匆忙,有不妥的地方大家一起交流啊^_^

相關推薦

2017完美世界試題n大樓m玻璃確定珠子破碎臨界樓層

這道題可以搜尋google扔玻璃珠筆試題以及騰訊2017的校招筆試也有一道這樣的題,不同的是,以上的題中只是用了兩顆玻璃珠,而這裡是m顆玻璃珠; 不過,同樣是扔珠子,所以思路都是一樣,只不過變得更有普

2014完美世界試題及答案

明天要去完美筆試的緣故,特意在網上找了完美2014年的校招筆試題練手。可能是自己基礎比較薄弱的緣故吧,感覺筆試題還是很難的。答案都是我自己上網查資料做的,有不對的地方還希望小夥伴們能夠指正。選擇題第13題和最後一道程式設計題,實在是不會,還希望能有小夥伴給解答一下。 一、

2013完美世界校園招聘試題

                1、設有矩陣A1(30*35)、A2(35*15)、A3(15*5)、A4(5*10),M=A1*A2*A3*A4,下列組合計算M所需數乘次數最少的是:A、(A1(A2(A3A4)))    B、(A1((A2A3)A4))    C、((A1A2)(A3A4))    D、(

2016騰訊試題(研發崗)

最近網際網路筆試較頻繁,也跟著師兄一起做了一些公司的筆試題,先將題記錄下來吧,答案慢慢補。希望對自己明年找工作有幫助!首先上騰訊的筆試題,騰訊是我的dream offer啊啊啊啊啊啊啊! 一、不定

2017-08-25阿里試題---菜鳥倉庫

”’ 阿里巴巴校招筆試附加題2菜鳥倉庫貨架編號問題 題目複述: 倉庫編號為0-9整數 以下為一示例: 1| 12| 123| 1234| 12345| ……|1234567891011

帶你領略拼多多2020試題這樣的難度你可以搞定嗎?

大家好,本來今天想寫一篇演算法和資料結構的。但是看了一眼計劃,發現基本上大部分基礎的內容都已經講過了。接下去就是一些競賽相關的演算法了,剛好最近是校招季,所以寫一點筆試題的題解,也許對大家的招聘有點用。 這一次選了拼多多的校招筆試題其中的一題,在寫文章的時候還看到了小馬智行的。也就是那個樓教主創辦的著名的po

網易2017試題 最大的奇約數

題目: 定義函式f(x)為x的最大奇數約數,x為正整數,例如f(44) = 11. 現在給出一個N,需要求出f(1) + f(2) + f(3) + ... + f(N) 例如: N = 7 f(1) + f(2) + f(3) + f(4) + f(5) + f(6) + f(7) = 1 + 1

2017 百度《資料探勘工程師》試題---程式題

一,程式題 1,餐廳裡有一張圓形的桌子,桌子上有n個座位,座位按照順序從1到n編號,而且n號座位和1號座位相鄰,每個座位都不一樣。m個人一起去這家餐廳吃飯,為了更好地就餐,他們不想坐得太過擁擠,因此,不允許有任意兩個相鄰。 您知道一共有多少種不同的就坐方法嗎

貝殼19試題

題目描述 小智和小春兩個遊戲菜鳥要進行電競搏鬥,小智有X點HP,每次攻擊會使對方丟失A點生命值,每次攻擊完後需要冷卻C秒,小春有Y點HP,每次攻擊會使對方丟失B點生命值,每次攻擊完後需要冷卻D秒,玩家HP小於等於0時便死亡,若小智最終存活,則輸出XIAOZHI,

小米運維部14試題A的個人答案

15年準備實習生面試時答的題,僅供參考一、linux基礎1)linux系統中如何獲取pid為100的程序所監聽的tcp埠,請給出詳細命令?【答】方法一:1netstat -nlg | grep 1950   2[[email protected] pierre]#

2017網易Java面試題

昨天參加了網易2017年校招面試,但是,一輪就被刷下來。仔細想想,確實自己實力不夠,今後需要更加努力!以下我是本次面試的經歷,主要講述面試題。 簡訊預約的是下午三點的面試,可是等到大概三點半才開始面試。我面試的Java開發,面試之前的幾天也抽時間看了點網上的資

今日頭條2017試題

問題描述: 頭條的2017校招開始了!為了這次校招,我們組織了一個規模巨集大的出題團隊,每個出題人都出了一些有趣的題目,而我們現在想把這些題目組合成若干場考試出來,在選題之前,我們對題目進行了盲審,並定出了每道題的難度系統。一場考試包含3道開放性題目,假設他們

2017試題

題目:輸入一個字串從左到右遍歷,如果遇到三個連續相同的子串就將這個子串刪除,並將原串剩下的部分拼接到一起,重複上述過程,直到字串中沒有可以刪除的子串。 eg: 輸入:AAABCCDDDCB AABBBABBBA 輸出:BB

完美世界演算法題2017

7點開始筆試,遲到了半小時,幸好還是全做完了。一道比較,一道動態規劃,都挺有趣的,憑記憶描述題目,程式碼半小時寫出來的,未優化,用的Java 題目一 首先輸入一個整數n 有A、B兩個隊

猿圈19試題

1.查詢整數 題目描述: 給定一個非降序的整數陣列,陣列中包含重複數字(重複數字很多),給定任意整數二分查詢,返回陣列正確的位置,給出函式實現。 a.連續相同的數字,返回最後一個匹配的位置。 b.如果數字不存在返回-1。 輸入描述: 第一行給定陣列長度n,目標值

2014新浪試題:取水果(17第一篇讓人懵逼的面試題)

前言 2017 年,我還是會堅持每週一篇面試題,當然我每週看的面試題肯定是不止一篇的,我是在這周看過的面試題中,選擇一題自己認為較好的來寫。因為每一篇都寫,不現實,寫一篇部落格,需要的時間也是挺長的,所以選擇較好較大眾化的題目。 一、題目

試題編程技巧總結

hid sca 筆試 result div else 總結 class ash 技巧一://統計字符串s1的頻率 String s1 = in.nextLine(); //統計字符串s1的頻率 for (char c1 : s1.toCharAr

1~n的全排列--閱文集團2018試題

put ron class 校招 next() tostring return bsp 輸出格式 題目大意:給定整數n,求出1~n的全排列 示例 輸入:n=3 輸出:[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1] 1 im

2018 CVTE 前端試題整理

簡單的 三欄布局 位置 back 左右 blue color for循環 結果 昨天晚上(7.20)做了CVTE的前端筆試,總共三十道題,28道多選題,2道編程題 。做完了之後覺得自己基礎還是不夠紮實,故在此整理出答案,讓自己能從中得到收獲,同時給日後的同學一些參考。 首先

2018 完美世界筆試程式設計題(Java)

01揹包簡單題,只不過要用Java寫,寫了比較久一點 import java.util.Scanner; public class Main { public static void main(String[] args) throws Exception { S