给出一些等式,求给定表达式的结果
描述
方程式以A/B=k格式给出,其中A和B是用字符串表示的变量,k是实数(浮点数)。给定一些查询,返回答案。如果答案不存在,返回-1。
比如给定: A / B = 2.0,B / C = 3.0。
要求: A / C = ? B / A = ? A / E = ?A / A = ?,X / X = ? …
样例
1 | 输入: [ ["a", "b"], ["b", "c"] ],[2.0, 3.0],[ ["a", "c"], ["b", "a"], ["a", "e"], ["a", "a"], ["x", "x"] ] |
思路
初期想直接按照实体数字,比如将 a 设定成 1 ,就可以求出 b , 递推求出其他的字母,后来发现这样做之后遇到之前两个字母都没有记录的数字会很麻烦,于是想用一个 rest 集合先保存这些两个字母都没被记录的,等第一轮结束后再进行 rest 集合的处理,后来发现这样也不行,原因在于 rest 集合中也会有两个同时没有出现的,难道再创建一个 rest 2 号吗 ? 显然这样十分的不合理。参考了一份代码,采用的是深度优先搜索,很厉害。注意对集合map<string,<string,map> >的理解。
代码
1 | class Solution { |