399 除法求值

2021-10-13 05:26:01 字數 1631 閱讀 4285

給出方程式a / b = k, 其中ab均為用字串表示的變數,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

問題:a / c = ?, b / a = ?, a / e = ?, a / a = ?, x / x = ?

返回:[6.0, 0.5, -1.0, 1.0, -1.0 ]

示例 2:

輸入: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...