12
返回列表 发新帖
楼主: yyyxxxccc
跳转到指定楼层
上一主题 下一主题
收起左侧

狗onsite

🔗
idatascience 2018-5-25 11:26:49 | 只看该作者
全局:
wenyitiger 发表于 2018-5-24 15:18
第三题感觉是一道DP 状态跟上一行从左进 从右进 有关

第三题,感觉像个minimun spanning tree?
回复

使用道具 举报

🔗
idatascience 2018-5-25 11:29:51 | 只看该作者
全局:
wenyitiger 发表于 2018-5-24 15:18
第三题感觉是一道DP 状态跟上一行从左进 从右进 有关

哦,没看到要求是逐行的,觉得DFS更好一些。
回复

使用道具 举报

🔗
idatascience 2018-5-25 11:31:40 | 只看该作者
全局:
yyyxxxccc 发表于 2018-4-25 09:51
是的必须逐行修,并且你没有办法从一行的中间直接进入下一行。必须从一行的最左边或者最右边进入下一行

如果必须是最左或左右,如果每行都有坏的,那岂不是就是左一行右一行就可以了?
回复

使用道具 举报

🔗
 楼主| yyyxxxccc 2018-5-25 12:44:30 | 只看该作者
全局:
不是啊 比如如果一行很长 并且坏的集中在最左边,那minimum cost可能就是把左边修完再折返
回复

使用道具 举报

🔗
wenyitiger 2018-5-29 15:24:33 | 只看该作者
全局:
  1. def minstep(matrix):
  2.     N = len(matrix[0])
  3.     M = len(matrix)
  4.     data = [[0,0] for x in xrange(M)]
  5.     for index in xrange(M):
  6.         #right
  7.         data[index][1] = (N - matrix[index].index(1))*2 -1
  8.         #left
  9.         data[index][0] = (N - matrix[index][::-1].index(1))*2 - 1
  10.         
  11.     cache = {}
  12.     def dfs(leftright,level):
  13.         if level == 0:
  14.             if leftright == 0:
  15.                 return N
  16.             else:
  17.                 return data[level][1]
  18.         if (leftright,level) not in cache:
  19.             cache[(leftright,level)] = min(dfs(leftright,level-1) + data[level][leftright], dfs(1-leftright,level-1) + N)
  20.         
  21.         return cache[(leftright,level)]
  22.    
  23.     return min(dfs(0,M-1),dfs(1,M-1))

复制代码


写了下第三题 欢迎大家讨论 :)  思路就是dfs(leftright,level) 表示第level行进 从左或者从右出 然后memorization一下
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册账号
隐私提醒:
  • ☑ 禁止发布广告,拉群,贴个人联系方式:找人请去🔗同学同事飞友,拉群请去🔗拉群结伴,广告请去🔗跳蚤市场,和 🔗租房广告|找室友
  • ☑ 论坛内容在发帖 30 分钟内可以编辑,过后则不能删帖。为防止被骚扰甚至人肉,不要公开留微信等联系方式,如有需求请以论坛私信方式发送。
  • ☑ 干货版块可免费使用 🔗超级匿名:面经(美国面经、中国面经、数科面经、PM面经),抖包袱(美国、中国)和录取汇报、定位选校版
  • ☑ 查阅全站 🔗各种匿名方法

本版积分规则

>
快速回复 返回顶部 返回列表