Redian新闻
>
[G] 给定k个数字,求所有表达式结果为X
avatar
[G] 给定k个数字,求所有表达式结果为X# JobHunting - 待字闺中
y*u
1
现在淘宝的全球购频道交易额最大的是什么类目?
记得是交易额 不是交易量。
记得是全球购频道(也就是代购频道) 不是整体淘宝
5选一
1:数码手机
2:笔记本电脑
3:包包
4:化妆品
5:母婴产品
答对的前3人 每人10个包子伺候
avatar
a*s
2
costco看到三种
focusfacor,据说补脑,但不甜 $39
lilcritters calcium 骨发育 $10+
lilcritters gummy vites 眼发育 $10+
哪种合适?thanks
avatar
n*s
3
Given four number a0, a1, a2, a3,..., ak
Find all possible expression to using + - * / with any '(',')' to generate a
result equals to target X.
上来就想了
1. 数字permutation (k!种)
2. 然后在数字之间插operator : +-*/ (k-1 spaces, total possibility 4^(k-1
))
3. 加括号,就是生成所有叶子数为k的树,简单起见就是用binary tree了
List GenTree(oprand[s..e])
{
List allTress = new List();
if(s==e)
allTrees.add(new Node(s));
return allTrees.
for i=s to e-1:
Node root = GenRoot(s, e, i)
List leftSubTrees = GenTree(oprand[s, i])
List rightSubTrees = GenTree(oprand[i+1, e])
allTress.addAll(GenFullTree(root, leftSubTrees,rightSubTrees)
return allTrees.
}
求结果就是post order traversal.
暴力解法有太多的重复计算了,求此题目简洁解法。
avatar
s*x
4
4:化妆品
avatar
m*n
5
为什么要给孩子吃这种东西?

【在 a**s 的大作中提到】
: costco看到三种
: focusfacor,据说补脑,但不甜 $39
: lilcritters calcium 骨发育 $10+
: lilcritters gummy vites 眼发育 $10+
: 哪种合适?thanks

avatar
l*r
6
递归啊。。这个题怎么是permutation。。
X +,-,×,/ ak,
然后用A1.。。。 Ak-1凑不同的结果
()就是用来提高优先级用的,可以无视

a
-1

【在 n*******s 的大作中提到】
: Given four number a0, a1, a2, a3,..., ak
: Find all possible expression to using + - * / with any '(',')' to generate a
: result equals to target X.
: 上来就想了
: 1. 数字permutation (k!种)
: 2. 然后在数字之间插operator : +-*/ (k-1 spaces, total possibility 4^(k-1
: ))
: 3. 加括号,就是生成所有叶子数为k的树,简单起见就是用binary tree了
: List GenTree(oprand[s..e])
: {

avatar
w*i
7
4:化妆品
avatar
n*1
8
自己做吧,放心
avatar
n*s
9
补充一下 在最后的结果表达式中,数字的顺序随便(但必须k个都用到),操作符的选择
和顺序随便,括号
的选择随便,但要合法。
楼上说的递归,没错,在这个题目里backtracking本质上就是permutation,不是么.
另外 在无括号的情况下,backtracking求表达式很好写,但是有括号呢?
avatar
b*a
10
5
avatar
d*7
11
小孩最好别吃这些东西,不健康。多吃水果吧,可以榨成果汁。
avatar
s*z
12
题目中的运算符有优先级的吗? 还是顺序运算过去就行了?
没有的话,
X = A1/A2 + A3*A4
貌似不能从
X/A4来反推.
感觉可以记忆化起来, 但是这个地方怎么存Key有点费思量了.
avatar
y*u
13
我刷牙吃饭回来...
avatar
a*s
14
哦,看到好像不少家庭都买...

【在 d****7 的大作中提到】
: 小孩最好别吃这些东西,不健康。多吃水果吧,可以榨成果汁。
avatar
w*s
15
每次从k中选两个数,枚举+,-,*,/四种操作,这样k个数就变成k-1个数了,递归枚举到
只剩下一个数即为结果。

【在 n*******s 的大作中提到】
: 补充一下 在最后的结果表达式中,数字的顺序随便(但必须k个都用到),操作符的选择
: 和顺序随便,括号
: 的选择随便,但要合法。
: 楼上说的递归,没错,在这个题目里backtracking本质上就是permutation,不是么.
: 另外 在无括号的情况下,backtracking求表达式很好写,但是有括号呢?

avatar
g*i
16
5

【在 y****u 的大作中提到】
: 现在淘宝的全球购频道交易额最大的是什么类目?
: 记得是交易额 不是交易量。
: 记得是全球购频道(也就是代购频道) 不是整体淘宝
: 5选一
: 1:数码手机
: 2:笔记本电脑
: 3:包包
: 4:化妆品
: 5:母婴产品
: 答对的前3人 每人10个包子伺候

avatar
j*f
17
我家买了COSTCO的3种GUMMY BEAR。呵呵。换着吃吧。:)
其实啊,大众店里的东西(比如SHAWS,TARGET,WALMART,KMART类),零食类
都差不多。
最近在TRADER JOES和WHOLE FOOD看到一些
新奇的东西。都可以拿来给孩子换着吃。

costco看到三种
focusfacor,据说补脑,但不甜 $39
lilcritters calcium 骨发育 $10+
lilcritters gummy vites 眼发育 $10+
哪种合适?thanks

【在 a**s 的大作中提到】
: costco看到三种
: focusfacor,据说补脑,但不甜 $39
: lilcritters calcium 骨发育 $10+
: lilcritters gummy vites 眼发育 $10+
: 哪种合适?thanks

avatar
b*9
18
括号是不是如果当前操作符是乘除就自动给后面出来的表达式加个括号?a * ( rest )

【在 n*******s 的大作中提到】
: 补充一下 在最后的结果表达式中,数字的顺序随便(但必须k个都用到),操作符的选择
: 和顺序随便,括号
: 的选择随便,但要合法。
: 楼上说的递归,没错,在这个题目里backtracking本质上就是permutation,不是么.
: 另外 在无括号的情况下,backtracking求表达式很好写,但是有括号呢?

avatar
b*0
19
4
avatar
c*p
20
这个我回一个。
我给他拿冰箱里面的 cheese糖糖。:)
avatar
n*s
21
有括号呢

【在 w*******s 的大作中提到】
: 每次从k中选两个数,枚举+,-,*,/四种操作,这样k个数就变成k-1个数了,递归枚举到
: 只剩下一个数即为结果。

avatar
p*p
22
以上都不是

【在 y****u 的大作中提到】
: 现在淘宝的全球购频道交易额最大的是什么类目?
: 记得是交易额 不是交易量。
: 记得是全球购频道(也就是代购频道) 不是整体淘宝
: 5选一
: 1:数码手机
: 2:笔记本电脑
: 3:包包
: 4:化妆品
: 5:母婴产品
: 答对的前3人 每人10个包子伺候

avatar
n*s
23
不是的,这里考察所有可能合法的括号 会生成的所有结果。

)

【在 b*****9 的大作中提到】
: 括号是不是如果当前操作符是乘除就自动给后面出来的表达式加个括号?a * ( rest )
avatar
k*u
24
5

【在 y****u 的大作中提到】
: 现在淘宝的全球购频道交易额最大的是什么类目?
: 记得是交易额 不是交易量。
: 记得是全球购频道(也就是代购频道) 不是整体淘宝
: 5选一
: 1:数码手机
: 2:笔记本电脑
: 3:包包
: 4:化妆品
: 5:母婴产品
: 答对的前3人 每人10个包子伺候

avatar
g*g
25
没错,基本上就是暴力组合各种表达式
在表达式最后求值。
void allexpressions(vector &num, vector &exps, vector &
ret, int target)
{
int n =num.size();
for(int i=0; i{
swap(num, 0,i);
exps.push_back(""+i);
allexpressions(num, 1, n, exps, ret, target);
exps.pop_back();
swap(num, 0,i);
}
}
void caculateExpressions(vector &exps, vector &ret, int
target)
{
}
void allexpressions(vector &num, int s ,int n, vector &exps
, vector &ret, int target)
{
static string ops[4] = {"+", "-", "*", "/"};
if (s == n)
{
caculateExpressions(exps, ret, target);
}
for(int i=s; i{
swap(num, i, s);
vector nexps;
for(int j=0; j{
for(int k=0; k<4; k++)
{
string vstr = combine(ops[k], num[i]);
nexps.push_back(exps[j]+vstr);
nexps.push_back("("+exps[j]+vstr+")");
int cnt = 0;
for(int l =exps[j].length()-1; l>=0; l--)
{
// not number
if (exps[j][l] >'9' || exps[j][l] < '0')
{
if (exps[j][l] == ')')
{
cnt++;
}
else if (exps[j][l] == '(')
{
cnt--;
}
else // ops
{
if (cnt == 0) // start pos of '('
{
nexps.push_back(exps[j].substr(0, l) +
exps[j][l] +"(" +vstr+")");
}
}
}
}
}
}
allexpressions(num, i+1, n, nexps, ret, target);
swap(num, i, s);
}
}

【在 n*******s 的大作中提到】
: 补充一下 在最后的结果表达式中,数字的顺序随便(但必须k个都用到),操作符的选择
: 和顺序随便,括号
: 的选择随便,但要合法。
: 楼上说的递归,没错,在这个题目里backtracking本质上就是permutation,不是么.
: 另外 在无括号的情况下,backtracking求表达式很好写,但是有括号呢?

avatar
k*u
26
能不能每个都选一边
avatar
w*s
27
已经处理了呀,没有括号只要排列加枚举算符

【在 n*******s 的大作中提到】
: 有括号呢
avatar
Y*i
28
3

【在 y****u 的大作中提到】
: 现在淘宝的全球购频道交易额最大的是什么类目?
: 记得是交易额 不是交易量。
: 记得是全球购频道(也就是代购频道) 不是整体淘宝
: 5选一
: 1:数码手机
: 2:笔记本电脑
: 3:包包
: 4:化妆品
: 5:母婴产品
: 答对的前3人 每人10个包子伺候

avatar
x*g
29
这个思路应该是正确方向。
取2个数,用+-*/操作,注意-/有2个方向,把结果放回剩下的k-2变成k-1子问题递归。
不过/如果不是整形操作,中间结果是浮点的话,精度损失又是个问题。
面试真是苦逼没用的事,遇上这种题,估计10有9挂,恶心啊。

【在 w*******s 的大作中提到】
: 每次从k中选两个数,枚举+,-,*,/四种操作,这样k个数就变成k-1个数了,递归枚举到
: 只剩下一个数即为结果。

avatar
l*u
30
卫生巾
avatar
w*s
31
用分数处理就可以了

【在 x****g 的大作中提到】
: 这个思路应该是正确方向。
: 取2个数,用+-*/操作,注意-/有2个方向,把结果放回剩下的k-2变成k-1子问题递归。
: 不过/如果不是整形操作,中间结果是浮点的话,精度损失又是个问题。
: 面试真是苦逼没用的事,遇上这种题,估计10有9挂,恶心啊。

avatar
m*n
32
5

【在 y****u 的大作中提到】
: 现在淘宝的全球购频道交易额最大的是什么类目?
: 记得是交易额 不是交易量。
: 记得是全球购频道(也就是代购频道) 不是整体淘宝
: 5选一
: 1:数码手机
: 2:笔记本电脑
: 3:包包
: 4:化妆品
: 5:母婴产品
: 答对的前3人 每人10个包子伺候

avatar
x*g
33
详解?

【在 w*******s 的大作中提到】
: 用分数处理就可以了
avatar
E*r
34
2

【在 y****u 的大作中提到】
: 现在淘宝的全球购频道交易额最大的是什么类目?
: 记得是交易额 不是交易量。
: 记得是全球购频道(也就是代购频道) 不是整体淘宝
: 5选一
: 1:数码手机
: 2:笔记本电脑
: 3:包包
: 4:化妆品
: 5:母婴产品
: 答对的前3人 每人10个包子伺候

avatar
w*s
35
自己写个分数类,或者用一些直接有标准库可以用,比如python的fractions

【在 x****g 的大作中提到】
: 详解?
avatar
b*t
36
5
avatar
x*g
37
哦,不熟悉这个,粗略看了下。
就是存分子/分母,完了简化可走最大公约数。+/-需要有最大公背数操作。
为了递归,把所有数都变成分数对象。
该类是不是还要考虑溢出.....?
另外:这个取2完了递归,算法本身如何去重?

【在 w*******s 的大作中提到】
: 自己写个分数类,或者用一些直接有标准库可以用,比如python的fractions
avatar
L*1
38
4
avatar
w*s
39
实现高精度运算就可应付溢出,或者直接使用有标准库的,python/ruby/java都有
去重需要先表达式分析去冗余括号,然后排序

【在 x****g 的大作中提到】
: 哦,不熟悉这个,粗略看了下。
: 就是存分子/分母,完了简化可走最大公约数。+/-需要有最大公背数操作。
: 为了递归,把所有数都变成分数对象。
: 该类是不是还要考虑溢出.....?
: 另外:这个取2完了递归,算法本身如何去重?

avatar
y*u
40
你下家给我的一个wifi版的卫生巾 昨天送给关长了 他老婆说很好用 很有面子

【在 l*********u 的大作中提到】
: 卫生巾
avatar
b*9
41
那就不仅乘除加括号,加减也后面可以加上括号应该就行了吧?

【在 n*******s 的大作中提到】
: 不是的,这里考察所有可能合法的括号 会生成的所有结果。
:
: )

avatar
l*t
42
4

【在 y****u 的大作中提到】
: 现在淘宝的全球购频道交易额最大的是什么类目?
: 记得是交易额 不是交易量。
: 记得是全球购频道(也就是代购频道) 不是整体淘宝
: 5选一
: 1:数码手机
: 2:笔记本电脑
: 3:包包
: 4:化妆品
: 5:母婴产品
: 答对的前3人 每人10个包子伺候

avatar
g*e
43
这样算不到(1*2)+(3*4)

【在 w*******s 的大作中提到】
: 每次从k中选两个数,枚举+,-,*,/四种操作,这样k个数就变成k-1个数了,递归枚举到
: 只剩下一个数即为结果。

avatar
y*o
44
5
avatar
t*9
45
肯定是5,
avatar
b*8
46
包包
avatar
y*u
47
答案揭晓
1 美容护肤/美体/精油
2 奶粉/辅食/营养品
3 手机
4 女装/女士精品
5 彩妆/香水/美发/工具
化妆品绝对的领先!
代购里最热门品牌是哪几个?欧美品牌里... (绝对不是apple,iphone,ipad)
到我俱乐部去看吧
avatar
y*u
48
soimbox
wiiwii
best4380
各10个包子 请查收...
avatar
E*r
49
1 4 5

【在 y****u 的大作中提到】
: 答案揭晓
: 1 美容护肤/美体/精油
: 2 奶粉/辅食/营养品
: 3 手机
: 4 女装/女士精品
: 5 彩妆/香水/美发/工具
: 化妆品绝对的领先!
: 代购里最热门品牌是哪几个?欧美品牌里... (绝对不是apple,iphone,ipad)
: 到我俱乐部去看吧

avatar
b*0
50
哈哈哈,受到大孢子,谢了
avatar
o*t
51
2

【在 y****u 的大作中提到】
: 现在淘宝的全球购频道交易额最大的是什么类目?
: 记得是交易额 不是交易量。
: 记得是全球购频道(也就是代购频道) 不是整体淘宝
: 5选一
: 1:数码手机
: 2:笔记本电脑
: 3:包包
: 4:化妆品
: 5:母婴产品
: 答对的前3人 每人10个包子伺候

avatar
w*i
52
haha,thanks for the big baozi~~
avatar
s*x
53
Oye! 谢谢!

【在 y****u 的大作中提到】
: soimbox
: wiiwii
: best4380
: 各10个包子 请查收...

相关阅读
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。