給你乙個變數對陣列 equations 和乙個實數值陣列 values 作為已知條件,其中 equations[i]
=[ai, bi] 和 values[i] 共同表示等式 ai / bi = values[i] 。每個 ai 或 bi 是乙個表示單個變數的字串。
另有一些以陣列 queries 表示的問題,其中 queries[j]
=[cj, dj] 表示第 j 個問題,請你根據已知條件找出 cj / dj =
? 的結果作為答案。
返回 所有問題的答案 。如果存在某個無法確定的答案,則用 -
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]
class
solution
double
graph =
newdouble
[point_count]
[point_count]
;//記錄點之間的權重
for(
int i =
0;i < point_count;i++)}
for(
int i =
0;i < equations.
size()
;i++
)for
(int k =
0;k < point_count;k++)}
}}double
res =
newdouble
[queries.
size()
];//儲存結果
for(
int i =
0;i < queries.
size()
;i++
) res[i]
= cur;
//賦值
}return res;
//返回結果
}}
演算法基礎( 演算法)
演算法基礎 演算法 hash演算法有兩種,即sha 1和md5演算法這裡先介紹md5演算法.md5產生乙個128位的hash值,在經過一寫初始樹立後,將明文分成了512位的塊,再將每一塊分成16個32位的子塊。演算法的輸出是4個32位的塊,連線起來構成128位的hash值。首先,將訊息填充到比512...
演算法 分治演算法
分治策略主要利用遞迴來解決問題,它包括以下三個步驟 分解 將問題分解為一與原問題類似並且比原問題規模更小的子問題 解決 當分解的子問題足夠小時,直接給出答案,否則用遞迴打方式求解 合併 將子問題的解合成原問題的解 下面考慮乙個簡單的利用分治演算法的歸併排序的例子 問題的形式化描述如下 輸入 a是 乙...
演算法 遞迴演算法
遞迴演算法的概念,就是通過不斷地呼叫自身,最終達到解決問題的目的。遞迴有兩個點需要注意 1.要不斷的呼叫自身 2.這個遞迴要有出口,不能成為死迴圈 看下面的例子。很多介紹遞迴演算法的,都會用遞迴來做乙個題目 計算乙個數的階層。例如 計算5的階層,5 5 x 4 x 3 x 2 x 1 用遞迴來實現 ...