一、前綴和/快慢指針,暴力法會超時
快慢指針:快指針先走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