Skip to content

Commit e11fbb8

Browse files
committed
2020-03-08
1 parent defbc1e commit e11fbb8

File tree

1 file changed

+42
-0
lines changed

1 file changed

+42
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
class Solution(object):
2+
def frogPosition(self, n, edges, t, target):
3+
"""
4+
:type n: int
5+
:type edges: List[List[int]]
6+
:type t: int
7+
:type target: int
8+
:rtype: float
9+
"""
10+
from collections import deque, defaultdict
11+
12+
# 1. 建图
13+
adj = defaultdict(set)
14+
for s, e in edges:
15+
adj[s].add(e)
16+
adj[e].add(s)
17+
18+
# 2. 初始化 DP 数组
19+
# dp[k][node] 代表在第 k 秒,蛤处于 node 的概率
20+
# dp[k][node] += dp[k - 1][parent] * prbability(parent -> node)
21+
22+
dp = [[0 for _ in range(n + 1)] for _ in range(t + 1)]
23+
dp[0][1] = 1
24+
25+
for time in range(1, t + 1):
26+
for par in range(1, n + 1):
27+
if dp[time - 1][par]:
28+
if not adj[par]:
29+
# 如果无处可去,则停留在原地
30+
dp[time][par] = dp[time - 1][par]
31+
else:
32+
# 能跳就跳
33+
for node in adj[par]:
34+
dp[time][node] += dp[time - 1][par] * 1.0 / len(adj[par])
35+
36+
# 跳完就把用过的边删掉
37+
for node in adj[par]:
38+
adj[node].remove(par)
39+
adj[par] = set()
40+
41+
return dp[t][target]
42+

0 commit comments

Comments
 (0)