由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
JobHunting版 - 求解一道面试题
相关主题
那道经典的求和问题Amazon 居然电面放鸽子
几道关于数据结构的面试题。01 Knapsack brute force code
菜鸟向大家请教个面试题一道coding test题
问一道微软的面试题-被难到了。details 2nd smallest element in an array
请教背包问题。问一个题目
关于n个数的所有和的一个问题问一道面试题
谁给个不是brute force的解法一个N个数的int数组如何找到3个majority的数?
一道Google题问一道算法题
相关话题的讨论汇总
话题: log话题: ki话题: 个数话题: knapsack话题: 答案
进入JobHunting版参与讨论
1 (共1页)
c********t
发帖数: 5706
1
从n个无重复正整数的数组里选m个数,要求这m个数的总和是<=S的最大解。
比如 从{1,3,9,15} 选 m=2个,<=13, 答案就是{3,9}。如果<=10,答案就是{1,9}
n*****s
发帖数: 6495
2
knapsack吧
2个dependency变成1个就行 O(mS)
c********t
发帖数: 5706
3
开始套不进knapsack去,因为把限定的value想当做weight的限制。
后来发现这个限制应该在benefit value上,只要在knapsack中间,比较一下总value是
不是超过limit就行了

【在 n*****s 的大作中提到】
: knapsack吧
: 2个dependency变成1个就行 O(mS)

n*****s
发帖数: 6495
4

普通的背包是P(n, K)depends on P(n-1, K)或者P(n-1, K-Ki)
这个应该只要P(n-1, K-Ki)

【在 c********t 的大作中提到】
: 开始套不进knapsack去,因为把限定的value想当做weight的限制。
: 后来发现这个限制应该在benefit value上,只要在knapsack中间,比较一下总value是
: 不是超过limit就行了

c********t
发帖数: 5706
5
你这样好像不太对,只要P(n-1, K-Ki)意思就是item i一定选择了。我刚刚做出,看我
前面的回文,但不知道还能不能优化。

【在 n*****s 的大作中提到】
:
: 普通的背包是P(n, K)depends on P(n-1, K)或者P(n-1, K-Ki)
: 这个应该只要P(n-1, K-Ki)

n*****s
发帖数: 6495
6

哦,我想错了
你那样做下来是O(nS)?

【在 c********t 的大作中提到】
: 你这样好像不太对,只要P(n-1, K-Ki)意思就是item i一定选择了。我刚刚做出,看我
: 前面的回文,但不知道还能不能优化。

c********t
发帖数: 5706
7
是O(mn) 因为m这里才是背包容量。S的用处只是判断了一下来limit max value

【在 n*****s 的大作中提到】
:
: 哦,我想错了
: 你那样做下来是O(nS)?

c********t
发帖数: 5706
8
唉,好像还是有问题,感觉这道题套不进knapsack

【在 c********t 的大作中提到】
: 是O(mn) 因为m这里才是背包容量。S的用处只是判断了一下来limit max value
n*****s
发帖数: 6495
9

好像是不行
我又想了一下即使O(nS)的也不行
总不能用brute force吧
难道那个都是整数的条件放在那里是用来误导的

【在 c********t 的大作中提到】
: 唉,好像还是有问题,感觉这道题套不进knapsack
c********t
发帖数: 5706
10
说实在的,把条件改为=S, 我也只能想出brute force的方法,除非m <=4可以用
hashtable。放弃了。

【在 n*****s 的大作中提到】
:
: 好像是不行
: 我又想了一下即使O(nS)的也不行
: 总不能用brute force吧
: 难道那个都是整数的条件放在那里是用来误导的

o**********t
发帖数: 406
11
no dup ... so you can sort first -> O(n*Log(n))
Then start picking from smallest.
Total complexity O(n) + O(n*Log(n)), still the same as O(n*Log(n))
c********t
发帖数: 5706
12
排玩序后,也不可能用O(n)找出m个数
虽然和背包问题不同,但还是可以用DP解, O(m*n*s) time

【在 o**********t 的大作中提到】
: no dup ... so you can sort first -> O(n*Log(n))
: Then start picking from smallest.
: Total complexity O(n) + O(n*Log(n)), still the same as O(n*Log(n))

1 (共1页)
进入JobHunting版参与讨论
相关主题
问一道算法题请教背包问题。
A两次电话面筋关于n个数的所有和的一个问题
A家一道题谁给个不是brute force的解法
给一堆points, 找到所有给定长度的正方形一道Google题
那道经典的求和问题Amazon 居然电面放鸽子
几道关于数据结构的面试题。01 Knapsack brute force code
菜鸟向大家请教个面试题一道coding test题
问一道微软的面试题-被难到了。details 2nd smallest element in an array
相关话题的讨论汇总
话题: log话题: ki话题: 个数话题: knapsack话题: 答案