由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
JobHunting版 - 这个Google题有什么好的解法吗?
相关主题
问个array in place operation的题目急问一个面试题,不知该如何回答?请高人给个思路!谢谢!
我花了一个小时才调通过这个程序一个EDA的问题
another google interview question:请问A家onsite安排在什么时间比较合适。顺便一面面经。
一道微软题这题应该是道简单题
google interview question感觉这是一道经典题
一个Google面试题问一道算法题
一道program challenge的题请教一道面试题
问道看到的面试题F家 一道LIS 的变种
相关话题的讨论汇总
话题: items话题: burger话题: coldrink话题: buy话题: input
进入JobHunting版参与讨论
1 (共1页)
c*******n
发帖数: 112
1
You are given a list of items / combo_items with their price list.
And you are given list of items to buy.
Now you are asked to find which combination to buy so that it costs you
minimum.
It doesnt matter if you are getting some extra items if it costs less.
Sr.No Price | Items/Combo_Items
1. 5 | Burger
2. 4 | French_Frice
3. 8 | Coldrink
4. 12 | Burger, French_Frice, Coldrink
5. 14 | Burger, Coldrink
Input Items to Buy:
Coldrink
Output(Sr.No)
3
Input Items to Buy:
Burger Coldrink
Output(Sr.No)
4
Input Items to Buy:
Burger French_Frice
Output(Sr.No)
1,2
h*******e
发帖数: 1377
2
爆搜加剪枝吧。
v***o
发帖数: 287
3
最笨,也最快的办法:
每个combo items 产生一个 set, 然后,用一个pair 或 class 存(set, price number
), 最后,用个array 穿以来。
对每个input search 那个array, 找出最便宜的price number.
这个题更像考data structure design.

【在 c*******n 的大作中提到】
: You are given a list of items / combo_items with their price list.
: And you are given list of items to buy.
: Now you are asked to find which combination to buy so that it costs you
: minimum.
: It doesnt matter if you are getting some extra items if it costs less.
: Sr.No Price | Items/Combo_Items
: 1. 5 | Burger
: 2. 4 | French_Frice
: 3. 8 | Coldrink
: 4. 12 | Burger, French_Frice, Coldrink

h*******e
发帖数: 1377
4
item 是多维的,你的array里每个元素的个数也是互相依赖的, 要bfs才行,做过类
似的题目。
如果有数目限制的话可以状态压缩dp,如果维数很大,而且combo每个可能取的也超
多的话只能dfs,, 。

number

【在 v***o 的大作中提到】
: 最笨,也最快的办法:
: 每个combo items 产生一个 set, 然后,用一个pair 或 class 存(set, price number
: ), 最后,用个array 穿以来。
: 对每个input search 那个array, 找出最便宜的price number.
: 这个题更像考data structure design.

Q*****a
发帖数: 33
5
几个优化方案:
对输入价格列表按物品个数排序,长的输入先计算能否用短的输入以更低成本表示,若
是则将其从价格列表中删除,这样可以减少价格列表数目,优化搜索
匹配时对价格列表按长到短搜索,到长度为1列表时直接计算,不用搜索了
备忘录记录中间搜索结果(内存会否爆棚)
简单贪心法行不通(也许有更好的贪心法本人没想到)
(i2,I4,I6,i8,i10): 5
(i1, i2):2
(i3, i4):2
(i5, i6):2
(i7, i8):2
(i9, i10):2
i1…i10:2
对于此价格列表,(i1,i2,i3,i4,i6,,i8,i10)最优解为[(i2,i4,i6,i8,i10), (i1), (
i3)]=9,而(i1,i2,i3,i4,i5,i6,i8,i10)最优解为[(i1,i2),(i3,i4),(i5,i6),i8,i10]=
10
a*****y
发帖数: 22
6
我有一个想法:
先建立map存储价格:(设商品用id表示)
struct ItemPrice {
std::vector items;
int price;
};
std::map > item_prices_;
表示将某个商品映射到所有包含该商品的组合或单件商品的价格
所求:
std::map< std::set, int > min_price_;
int FindMinPrice(const std::set& items, const std::set& used_items
) {
std::set target;
// target = items - used_items
if (target.empty()) {
return 0;
}
if (min_prices_.count(itesms) > 0) {
return ...;
}
int min = 0x7FFFFFF;
// get the first item in target, let it be a
for (int i = 0; i < item_prices_[a].size(); ++i) {
int curr = item_prices_[a][i].price;
// std::set new_used_items = used_items + other items in item_
prices_[a].items
if (curr + FindMinPrice(items, new_used_items)) {
min = ...;
}
}
min_price[items] = min;
return min;
}
r***s
发帖数: 737
7
你的这个map就是一个reverse index,对么?
另外我觉得你的code不对,对于每一个商品或组合,都要两次调用递归函数
一次假设取当前商品或组合,一次不取

【在 a*****y 的大作中提到】
: 我有一个想法:
: 先建立map存储价格:(设商品用id表示)
: struct ItemPrice {
: std::vector items;
: int price;
: };
: std::map > item_prices_;
: 表示将某个商品映射到所有包含该商品的组合或单件商品的价格
: 所求:
: std::map< std::set, int > min_price_;

n*******1
发帖数: 145
8
这题有问题吧 5号根本没有存在意义啊 一块买比单买还贵 就用4号匹配 剩下的单买不
就行了
1 (共1页)
进入JobHunting版参与讨论
相关主题
F家 一道LIS 的变种google interview question
谁给一个这道题目的sample code一个Google面试题
LeetCode balanced Binary tree 请教一道program challenge的题
F家电话一面问道看到的面试题
问个array in place operation的题目急问一个面试题,不知该如何回答?请高人给个思路!谢谢!
我花了一个小时才调通过这个程序一个EDA的问题
another google interview question:请问A家onsite安排在什么时间比较合适。顺便一面面经。
一道微软题这题应该是道简单题
相关话题的讨论汇总
话题: items话题: burger话题: coldrink话题: buy话题: input