一、前缀和/快慢指针,暴力法会超时
快慢指针:快指针先走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
本文来自程序媛驿站,未经授权不得转载.
如有需要请公众号后台联系
(欢迎转发到朋友圈~)