Skip to content

Commit 4ba9481

Browse files
committed
骰子求和
1 parent 4530cc3 commit 4ba9481

File tree

1 file changed

+31
-0
lines changed

1 file changed

+31
-0
lines changed

dices_sum.py

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
# -*- coding: utf-8 -*-
2+
3+
class Solution:
4+
# @param {int} n an integer
5+
# @return {tuple[]} a list of tuple(sum, probability)
6+
def dicesSum(self, n):
7+
# Write your code here
8+
'''
9+
只有1个骰子,概率是1/6。
10+
对于有2个骰子的情况,以第一个骰子为基础算,m[x][y]代表x个骰子获得y点。
11+
m[2][7]等于以下状态的和:
12+
- m[1][1] / 6(出6点)
13+
- m[1][2] / 6(出5点)
14+
- m[1][3] / 6(出4点)
15+
- m[1][4] / 6(出3点)
16+
- m[1][5] / 6(出2点)
17+
- m[1][6] / 6(出1点)
18+
'''
19+
ret = []
20+
matrix = [[0] * (n * 6) for i in xrange(n)]
21+
for i in xrange(6): # 初始化1个骰子的结果
22+
matrix[0][i] = 1.0 / 6.0
23+
for i in xrange(n - 1):
24+
for j in xrange(i, (i + 1) * 6):
25+
prob = matrix[i][j] / 6
26+
for k in xrange(1, 7):
27+
# 利用matrx[i][j]更新matrix[i + 1][j + k]
28+
matrix[i + 1][j + k] += prob
29+
for i in xrange(n - 1, n * 6):
30+
ret.append([i + 1, matrix[-1][i]])
31+
return ret

0 commit comments

Comments
 (0)