周長最長;及找到最大數分析
今日面試題:周長最長
n根長度不一的棍子,判斷是否有三根棍子可以構成三角形,並且找到周長最長的三角形。
=======================================
找到最大數分析
原題
請構造程式,找到滿足如下條件的最大數:
假設最大數表示為,abcdefghihk..... 每一個字母表示一位,其中abc,bcd,cde...以此類推,每三個一組,構成的數字是素數,也就是說abc, bcd, cde,等,都是素數,而且這些素數是互不相同的。
分析
首先,這個最大的數存在麼?一定存在的。因為,abc、bcd、cde等都是不同的素數。並不會出現環。總會結束。
其次,面試題做得多了,要能夠令靈活運用。並不是一定要有多麼巧妙的方法,當然,一個大家都會追求一個巧妙的思路。但不好覺得暴力的方法,在任何條件下,都是拒之千里的。這個題目首先想到暴力解決,是沒有問題的。三位的素數是有限的。這是可以暴力的基礎。
那麼,出了暴力之外,還可以如何改進呢?我們首先對這個題目進行建模,構造一個有向圖G。G中的節點就是三位素數,比如abc,bcd,def都是三位素數,則他們都是有向圖G中的節點。其中,abc和bcd之間有abc指向bcd的邊。abc、bcd則與def之間沒有邊。如此,構造完整G。大家可以在紙上畫一畫。所有的三位素數如下:
101, 103, 107, 109, 113,
127, 131, 137, 139, 149, 151, 157, 163, 167, 173,
179, 181, 191, 193, 197, 199, 211, 223, 227, 229,
233, 239, 241, 251, 257, 263, 269, 271, 277, 281,
283, 293, 307, 311, 313, 317, 331, 337, 347, 349,
353, 359, 367, 373, 379, 383, 389, 397, 401, 409,
419, 421, 431, 433, 439, 443, 449, 457, 461, 463,
467, 479, 487, 491, 499, 503, 509, 521, 523, 541,
547, 557, 563, 569, 571, 577, 587, 593, 599, 601,
607, 613, 617, 619, 631, 641, 643, 647, 653, 659,
661, 673, 677, 683, 691, 701, 709, 719, 727, 733,
739, 743, 751, 757, 761, 769, 773, 787, 797, 809,
811, 821, 823, 827, 829, 839, 853, 857, 859, 863,
877, 881, 883, 887, 907, 911, 919, 929, 937, 941,
947, 953, 967, 971, 977, 983, 991, 997
有向圖G構造完畢之後,該如何找到最大的數呢?其實就是找到G中,最長的路徑。可以採用動態規劃來解決。dp[i]表示,到節點i為止的最長路徑。狀態轉移方程可以表示為:
dp[i] = max(dp[j] + 1), 其中, 節點j是有邊指向i的所有節點。
在實現過程中,要注意儲存路徑,這樣才能得到最大數。例如,得到最大的j為j1,則 儲存prev[i] = j1。
通過計算,最終得到最大數為:
9419919379773971911373313179
【分析完畢】
本文來自微信:待字閨中,2013-08-11釋出,原創@陳利人 ,歡迎大家繼續關注微信公眾賬號“待字閨中”。
相關文章
- 976-三角形的最大周長
- Leetcode976. 三角形的最大周長LeetCode
- 最長
- 最長公共子序列求方案數
- LeetCode每日一題: 三角形的最大周長(No.976)LeetCode每日一題
- spark lac 分析停留最長的兩個地方Spark
- 最長子串
- 最長公共字首
- 673. 最長遞增子序列的個數
- MySQL 中 VARCHAR 最大長度及 CHAR 和 VARCHAR 的區別MySql
- Websocket 突破最大長連線Web
- 如何從整數陣列中找到最大和最小數陣列
- Leedcode-島嶼的周長
- 求矩形周長與面積
- 最長公共子序列
- 最長遞增子序列
- 最長有效括號
- 最長上升子序列
- 最長上升子串
- 最長相等子序列
- 最長最短單詞
- golang 計算最長不重複字串長度Golang字串
- 【LeetCode動態規劃#14】子序列系列題(最長遞增子序列、最長連續遞增序列、最長重複子陣列、最長公共子序列)LeetCode動態規劃陣列
- 收入再增長20%!網易又在SLG賽道找到新增長點?
- 什麼是長尾關鍵詞?如何找到長尾關鍵詞?
- 給定陣列中找到最大的兩個數陣列
- 3201 圓的周長與面積
- CAD面積周長同步測量
- Facebook 面試題 | 島的周長面試題
- L2-008 最長對稱子串【最長迴文字串】字串
- Sourcengine:2022年2月處理器最長交貨時間達到99周
- Day 45 | 300.最長遞增子序列 、674. 最長連續遞增序列 、718. 最長重複子陣列陣列
- 14_最長公共字首
- 最長的Hello, World!(Python)Python
- 14. 最長公共字首
- lCS(最長公共子串)
- Leedcode-最長特殊序列 Ⅰ
- 力扣最長公共字首力扣
- 每日leetcode——最長公共字首LeetCode