【编程题】【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

 

 

本文来自程序媛驿站,未经授权不得转载.

如有需要请公众号后台联系

(欢迎转发到朋友圈~)

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值