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

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

全局:

2019(7-9月) 码农类General 本科 全职@google - 网上海投 - 技术电面  | | WaitList | 在职跳槽

注册一亩三分地论坛,查看更多干货!

您需要 登录 才可以下载或查看附件。没有帐号?注册账号

x
题目背景:有很多乐高,比如大小为1,2, 3, 5的乐高,给一个target,比如10,求问最少的乐高块数拼凑得到target,比如用两个大小为5的乐高可以得到target 10,也可以用10个大小为1的乐高得到target
您好!
本帖隐藏的内容需要积分高于 188 才可浏览
您当前积分为 0。
使用VIP即刻解锁阅读权限或查看其他获取积分的方式
游客,您好!
本帖隐藏的内容需要积分高于 188 才可浏览
您当前积分为 0。
VIP即刻解锁阅读权限 或 查看其他获取积分的方式
Unlock interview details and practice with AI
Curated Interview Questions from Top Companies
片,如果只剩0片了,就不能再取了

求问大神,在每种乐高数量已知并且有限的情况下,怎么用动态规划做这题。。。。。。。  

评分

参与人数 2大米 +18 收起 理由
匿名用户-YRSQC + 15
financeFree + 3 很有用的信息!

查看全部评分


上一篇:土澳master美国找工
下一篇:面经总结

本帖被以下淘专辑推荐:

全局:
这不就是经典的背包问题吗
设dp[i, j] = 前i个乐高拼出j的最小块数, 那么就是求dp[N, target]
dp[i, j] = dp[i-1, j-k*l[i]]+k, 0<=k<=j/l[i], where l[i] 是第i个乐高的大小
回复

使用道具 举报

推荐
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. }
复制代码


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

使用道具 举报

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

使用道具 举报

🔗
Sengo 2019-6-25 22:35:41 | 只看该作者
全局:
硬币问题。。经典题。。。送分题。。。。

评分

参与人数 1大米 +1 收起 理由
ducklearning + 1 给你点个赞!

查看全部评分

回复

使用道具 举报

🔗
yeetatbig4 2019-6-25 23:09:29 | 只看该作者
全局:
yeah......和楼上2位反应一致。。这是经典硬币题,LZ再刷题时,一定要按类别刷。这题应该是DP类里的基础题。
Capital One 的new grad 面试一天到晚考这题。
回复

使用道具 举报

🔗
mmm11221 2019-6-25 23:32:21 | 只看该作者
全局:
这就是个“完全背包”。可参见《背包问题九讲》。
回复

使用道具 举报

🔗
 楼主| aiweiwei 2019-6-26 01:26:20 | 只看该作者
全局:
谢谢楼上各位指道儿。。。  自己太弱了。。。。
回复

使用道具 举报

🔗
gginin123 2019-6-26 06:59:35 | 只看该作者
全局:
看完才發現我也是太弱的那個
回复

使用道具 举报

🔗
leecx22 2019-6-26 09:36:00 | 只看该作者
全局:
这不是完全背包吗
回复

使用道具 举报

🔗
crazycodyman 2019-6-26 14:29:00 | 只看该作者
全局:
leecx22 发表于 2019-6-26 09:36
这不是完全背包吗

完全背包取件是无限的,这题的有限的取件,不一样吧?
回复

使用道具 举报

🔗
crazycodyman 2019-6-26 14:30:03 | 只看该作者
全局:
Sengo 发表于 2019-6-25 22:35
硬币问题。。经典题。。。送分题。。。。

基础的硬币问题是无限取件,那楼主的答案没错啊,请问一下这样有限取件的解哪里可以学习一下?https://blog.csdn.net/qsyzb/article/details/26962753
回复

使用道具 举报

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

本版积分规则

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