給出方程式a / b = k
, 其中a
和b
均為用字串表示的變數,k
是乙個浮點型數字。根據已知方程式求解問題,並返回計算結果。如果結果不存在,則返回-1.0
。
輸入總是有效的。你可以假設除法運算中不會出現除數為 0 的情況,且不存在任何矛盾的結果。
示例 1:
輸入:equations = [["a","b"],["b","c"]], values = [2.0,3.0], queries = [["a","c"],["b","a"],["a","e"],["a","a"],["x","x"]]輸出:[6.00000,0.50000,-1.00000,1.00000,-1.00000]解釋:給定:a / b = 2.0, b / c = 3.0示例 2:問題:a / c = ?, b / a = ?, a / e = ?, a / a = ?, x / x = ?
返回:[6.0, 0.5, -1.0, 1.0, -1.0 ]
輸入:equations = [["a","b"],["b","c"],["bc","cd"]], values = [1.5,2.5,5.0], queries = [["a","c"],["c","b"],["bc","cd"],["cd","bc"]]輸出:[3.75000,0.40000,5.00000,0.20000]示例 3:
輸入:equations = [["a","b"]], values = [0.5], queries = [["a","b"],["b","a"],["a","c"],["x","y"]]輸出:[0.50000,2.00000,-1.00000,-1.00000]
思路:floyd演算法
**實現:
class solution }}
// 構建乙個矩陣來代替圖結構
int n = count + 1;
double graph = new double[n][n];
// 初始化
for (string str : map.keyset())
int index = 0;
for (listlist : equations)
// 通過floyd演算法進行運算
for (int i = 0; i < n ; i++)
if (graph[j][i] !=0 && graph[i][k] != 0) }}
}//直接通過查詢矩陣得到答案
double res = new double[queries.size()];
for (int i = 0; i < queries.size(); i++) else
}return res;
}}
399 除法求值
給出方程式a b k,其中a和b均為代表字串的變數,k是乙個浮點型數字。根據已知方程式求解問題,並返回計算結果。如果結果不存在,則返回 1.0。示例 給定a b 2.0,b c 3.0 問題 a c b a a e a a x x 返回 6.0,0.5,1.0,1.0,1.0 輸入為 vector ...
399 除法求值
給你乙個變數對陣列 equations 和乙個實數值陣列 values 作為已知條件,其中 equations i ai,bi 和 values i 共同表示等式 ai bi values i 每個 ai 或 bi 是乙個表示單個變數的字串。另有一些以陣列 queries 表示的問題,其中 quer...
399 除法求值
給你乙個變數對陣列 equations 和乙個實數值陣列 values 作為已知條件,其中 equations i ai,bi 和 values i 共同表示等式 ai bi values i 每個 ai 或 bi 是乙個表示單個變數的字串。另有一些以陣列 queries 表示的問題,其中 quer...