楼主: aiweiwei
跳转到指定楼层
上一主题 下一主题
收起左侧

Google 二面 求乐高块数 用动态规划 不会做 求问

🔗
crazycodyman 2019-6-26 14:46:33 | 只看该作者
全局:
您好!
本帖隐藏的内容需要积分高于 100 才可浏览
您当前积分为 0。
使用VIP即刻解锁阅读权限或查看其他获取积分的方式
游客,您好!
本帖隐藏的内容需要积分高于 100 才可浏览
您当前积分为 0。
VIP即刻解锁阅读权限 或 查看其他获取积分的方式
Unlock interview details and practice with AI
Curated Interview Questions from Top Companies
回复

使用道具 举报

🔗
leecx22 2019-6-27 02:21:19 | 只看该作者
全局:
crazycodyman 发表于 2019-6-26 14:29
完全背包取件是无限的,这题的有限的取件,不一样吧?

那这算是多重背包?
回复

使用道具 举报

🔗
qqaas 2019-6-27 03:20:52 来自APP | 只看该作者
全局:
实在不会就写dfs+memo吧 背包问题就是要背通式 唯有dfs memo是不需要背万能的
回复

使用道具 举报

🔗
danshuiyuq 2019-6-27 08:05:45 | 只看该作者
全局:
        很有用的信息!
回复

使用道具 举报

🔗
crazycodyman 2019-6-27 09:28:13 | 只看该作者
全局:
leecx22 发表于 2019-6-27 02:21
那这算是多重背包?

是啊,这题如果是完全背包,那楼主的解法就没问题
回复

使用道具 举报

🔗
Arteezyxu 2019-6-27 18:13:24 | 只看该作者
全局:
  1. public int minLego(int[][] legos, int target) {
  2.         int m = legos.length;
  3.         int[][] dp = new int[m+1][target+1];
  4.         for(int i = 1; i <= target; i++) {
  5.                 dp[0][i] = -1;
  6.         }
  7.         for(int i = 1; i <= m; i++) {
  8.                 int lego = legos[i-1][0], num = legos[i-1][1];
  9.                 for(int j = 1; j <= target; j++) {
  10.                         dp[i][j] = -1;
  11.                         for(int k = 0; k <= num; k++) {
  12.                                 if(j < k * lego)
  13.                                         break;
  14.                                 if(dp[i-1][j - k * lego] != -1) {
  15.                                         if(dp[i][j] == -1)
  16.                                                 dp[i][j] = k + dp[i-1][j - k * lego];
  17.                                         else
  18.                                                 dp[i][j] = Math.min(dp[i][j], k + dp[i-1][j - k * lego]);
  19.                                 }
  20.                         }
  21.                 }
  22.         }
  23.         return dp[m][target];
  24. }
复制代码


写了一下代码,有错误的话请大神指出。
回复

使用道具 举报

🔗
MrQuin33 2019-6-28 00:58:28 | 只看该作者
回复

使用道具 举报

🔗
yf233 2019-6-28 03:45:38 | 只看该作者
全局:
  1. def solve(legos,target):
  2.     dp = [[9999 for x in range(target+1)] for x in range(len(legos))]
  3.     for i in range(len(legos)):
  4.         for t in range(target+1):
  5.             if t==0:
  6.                 dp[i][t] = 0
  7.             elif legos[i] == t:
  8.                 dp[i][t] = 1
  9.             elif legos[i]>t:
  10.                 dp[i][t] = dp[i-1][t]
  11.             else:
  12.                 dp[i][t] = min(1 + dp[i-1][t-legos[i]],  dp[i-1][t])
  13.     return dp[len(legos)-1][target]

  14. legos = [1]*10+[2]*5+[3]*4+[5]
复制代码


写了一下python的,欢迎指正……bottom up的方法,9999代表无解
回复

使用道具 举报

全局:
这是有限取件
回复

使用道具 举报

🔗
T_Suen 2019-8-5 07:35:25 | 只看该作者
全局:
您好!
本帖隐藏的内容需要积分高于 100 才可浏览
您当前积分为 0。
使用VIP即刻解锁阅读权限或查看其他获取积分的方式
游客,您好!
本帖隐藏的内容需要积分高于 100 才可浏览
您当前积分为 0。
VIP即刻解锁阅读权限 或 查看其他获取积分的方式
Unlock interview details and practice with AI
Curated Interview Questions from Top Companies
回复

使用道具 举报

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

本版积分规则

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