由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
JobHunting版 - 问一道面试题
相关主题
讨论一道Google面试题G intern电面面经
一道亚麻电面题目请问一道题:leetcode 416题的扩展
讨论一道面试题请教背包问题。
epic面试题再来讨论一个题!
问一道算法题求解比硬币找零稍难的一题
splunk面经,攒人品贴面经, 攒人品
0/1 Knapsack问题Linear Space的算法可以实现Backtrack吗?问一题
问个算法题2今天的一道google电面题目
相关话题的讨论汇总
话题: 10话题: 给定话题: 80话题: nice话题: problem
进入JobHunting版参与讨论
1 (共1页)
E***n
发帖数: 166
1
给定一个整数数组,从大到小已经排好序,比如
30, 23, 10, 5, 2, 1
再给定一个整数,比如80,用给定数组中的元素来凑成80, 比如 80 = 30 + 30 + 10
+ 10
使得使用的元素个数最少(这个题目很像”找钱“,用有限的纸币的面值才凑数)。
我没有好的idea,
恳请高手指教!
刚才忘了说,1是永远存在数列里面的
s*********t
发帖数: 1663
2
google 背包问题

10

【在 E***n 的大作中提到】
: 给定一个整数数组,从大到小已经排好序,比如
: 30, 23, 10, 5, 2, 1
: 再给定一个整数,比如80,用给定数组中的元素来凑成80, 比如 80 = 30 + 30 + 10
: + 10
: 使得使用的元素个数最少(这个题目很像”找钱“,用有限的纸币的面值才凑数)。
: 我没有好的idea,
: 恳请高手指教!
: 刚才忘了说,1是永远存在数列里面的

p*********w
发帖数: 23432
3
从大往小凑。
凑不成功之后,就回退一级

10

【在 E***n 的大作中提到】
: 给定一个整数数组,从大到小已经排好序,比如
: 30, 23, 10, 5, 2, 1
: 再给定一个整数,比如80,用给定数组中的元素来凑成80, 比如 80 = 30 + 30 + 10
: + 10
: 使得使用的元素个数最少(这个题目很像”找钱“,用有限的纸币的面值才凑数)。
: 我没有好的idea,
: 恳请高手指教!
: 刚才忘了说,1是永远存在数列里面的

B*****t
发帖数: 335
4
NPC, 没什么通用的好方法。
如果数的个数小于25,DFS效率好一些。
否则的话用 psudo-polynomial的背包问题的标准解法。

10

【在 E***n 的大作中提到】
: 给定一个整数数组,从大到小已经排好序,比如
: 30, 23, 10, 5, 2, 1
: 再给定一个整数,比如80,用给定数组中的元素来凑成80, 比如 80 = 30 + 30 + 10
: + 10
: 使得使用的元素个数最少(这个题目很像”找钱“,用有限的纸币的面值才凑数)。
: 我没有好的idea,
: 恳请高手指教!
: 刚才忘了说,1是永远存在数列里面的

E***n
发帖数: 166
5
谢谢
但是这样不一定能找到最少的.如果我给定数组
10, 7, 1
要求凑14,那么从大往小凑需要14 = 10 + 1 + 1 + 1 + 1,实际上14 = 7 + 7,只要2个

【在 p*********w 的大作中提到】
: 从大往小凑。
: 凑不成功之后,就回退一级
:
: 10

s*********t
发帖数: 1663
6
可以重复使用也没关系
总之思路就是贪心地试验

2个

【在 E***n 的大作中提到】
: 谢谢
: 但是这样不一定能找到最少的.如果我给定数组
: 10, 7, 1
: 要求凑14,那么从大往小凑需要14 = 10 + 1 + 1 + 1 + 1,实际上14 = 7 + 7,只要2个

b******g
发帖数: 1721
7
hehe, very nice. It is a NPC problem like subset sum problem.

【在 B*****t 的大作中提到】
: NPC, 没什么通用的好方法。
: 如果数的个数小于25,DFS效率好一些。
: 否则的话用 psudo-polynomial的背包问题的标准解法。
:
: 10

r****o
发帖数: 1950
8
能不能贴一下代码或pseudo code?
多谢。

【在 p*********w 的大作中提到】
: 从大往小凑。
: 凑不成功之后,就回退一级
:
: 10

y**i
发帖数: 1112
9
回溯法可以么

10

【在 E***n 的大作中提到】
: 给定一个整数数组,从大到小已经排好序,比如
: 30, 23, 10, 5, 2, 1
: 再给定一个整数,比如80,用给定数组中的元素来凑成80, 比如 80 = 30 + 30 + 10
: + 10
: 使得使用的元素个数最少(这个题目很像”找钱“,用有限的纸币的面值才凑数)。
: 我没有好的idea,
: 恳请高手指教!
: 刚才忘了说,1是永远存在数列里面的

E***n
发帖数: 166
10
不能这么做,我最后用了dynamic programming.
Grady algorithm可能无法得到正确的结果,除非穷举,但是这样太慢了

【在 s*********t 的大作中提到】
: 可以重复使用也没关系
: 总之思路就是贪心地试验
:
: 2个

r****o
发帖数: 1950
11
你说的Greedy algorithm是用DFS搜索吗?

【在 E***n 的大作中提到】
: 不能这么做,我最后用了dynamic programming.
: Grady algorithm可能无法得到正确的结果,除非穷举,但是这样太慢了

E***n
发帖数: 166
12
dynamic programming,
和费波纳契数列比较类似
Backtracking可能需要返回不止一次,所以太麻烦了

【在 y**i 的大作中提到】
: 回溯法可以么
:
: 10

n******r
发帖数: 1247
13
Nice exercise for practising Knapsack problem
Let all items having weight 1, i.e. w_i=1, p_i being item i's value, A(Y)
being the min weight that can be achieved with total money Y (achieveable
becasue 1 is always there)
Then
A(0) = 0
A(Y)=min{1+A(Y-p_i)|p_i≤Y}
Calculate A(1),A(2),..., till you get A(80)
What kind of position is this interview for?

10

【在 E***n 的大作中提到】
: 给定一个整数数组,从大到小已经排好序,比如
: 30, 23, 10, 5, 2, 1
: 再给定一个整数,比如80,用给定数组中的元素来凑成80, 比如 80 = 30 + 30 + 10
: + 10
: 使得使用的元素个数最少(这个题目很像”找钱“,用有限的纸币的面值才凑数)。
: 我没有好的idea,
: 恳请高手指教!
: 刚才忘了说,1是永远存在数列里面的

c******f
发帖数: 2144
14
对的 就是动态规划
1 (共1页)
进入JobHunting版参与讨论
相关主题
今天的一道google电面题目问一道算法题
急问,Boggle (crossword)的解题思路?splunk面经,攒人品
抛砖引玉,讨论一下Jigsaw题?0/1 Knapsack问题Linear Space的算法可以实现Backtrack吗?
`一道A面题问个算法题2
讨论一道Google面试题G intern电面面经
一道亚麻电面题目请问一道题:leetcode 416题的扩展
讨论一道面试题请教背包问题。
epic面试题再来讨论一个题!
相关话题的讨论汇总
话题: 10话题: 给定话题: 80话题: nice话题: problem