一对括号,百种人生:聊聊「为运算表达式设计优先级」这道被低估的算法题
大家好,我是Echo_Wish。
今天想跟你聊一道看起来像小学数学,实际是算法内功心法的题——
Different Ways to Add Parentheses(为运算表达式设计优先级)。
很多人第一次看到这题的反应是:
“这不就是加括号吗?枚举一下不就完了?”
但你真写着写着,就会发现不对劲了:
- 括号怎么加都对
- 结果却可能完全不一样
- 表达式一长,组合数直接爆炸
这道题,不是考你会不会算,而是考你会不会“拆问题”。
一、先说人话:这题到底在问啥?
题目给你一个字符串,比如:
"2*3-4*5"你可以在任意地方加括号,只要不改变数字和运算符的顺序,问:
所有不同加括号方式,能算出哪些结果?
比如上面这个例子,答案是:
[-34, -14, -10, -10, 10]注意重点: