【編程題】【2019騰訊技術類第一次筆試】

一、前綴和/快慢指針,暴力法會超時

快慢指針:快指針先走k個 然後走一遍 O(n) 走的時候保存最小值 就是答案

二、回溯/BFS

解題思路:

在只走‘.’的情況下把終點的冰踩碎

輸入n*m的矩陣,以及走的開始和終點位置

在開始點,上下左右找‘.’,有就走,並把改點設置爲‘X’,走到終點時候,若終點是‘X’則成功。

其他情況都失敗。

三、最小生成樹

構造一個通訊網絡,使得N個城市能夠連通並且代價最小(可以使用prim算法實現)

問題描述:

給頂一個地區的N個城市間的距離網,用PRIM算法或KRUSKAL算法建立最小生成樹,並計算得到的最小生成樹的代價.

基本要求:

1.城市間的距離採用鄰接矩陣表示,鄰接矩陣的存儲結構定義採用課本中給出的定義,若兩個城市之間不存在道路,則將相應邊的權值設爲自己定義的無窮大值.要求在屏幕上顯示得到的最小生成樹作用包括了哪些城市間的道路,並顯示得到的最小生成樹的代價.

2.表示城市間距離網的臨界矩陣(要求最小6個城市,10條邊).

3.最小生成樹中寶庫的邊及其權值,並顯示得到的最小生成樹的代價.

其中要注意城市間有向

四、動態規劃

if num[x][y] != 0:

dp[x][y][0] = max(dp[x-1][y][0], dp[x-1][y+1][0], dp[x-1][y-1][0]) + num[x][y] # 標記正Max

dp[x][y][1] = min(dp[x-1][y][1], dp[x-1][y+1][1], dp[x-1][y-1][1]) + num[x][y] # 標記負Max

else:

dp[x][y][0] = -1 * min(dp[x-1][y][1], dp[x-1][y+1][1], dp[x-1][y-1][1])

dp[x][y][1] = -1 * max(dp[x-1][y][0], dp[x-1][y+1][0], dp[x-1][y-1][0])

五、貪心

unfinished

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章