# coding: utf-8 class Solution: # @param {int} n an integer # @return {tuple[]} a list of tuple(sum, probability) def dicesSum(self, n): # Write your code here ''' åªæ1个骰åï¼æ¦çæ¯1/6ã å¯¹äºæ2个骰åçæ åµï¼ä»¥ç¬¬ä¸ä¸ªéª°å为åºç¡ç®ï¼m[x][y]代表x个骰åè·å¾yç¹ã m[2][7]çäºä»¥ä¸ç¶æçåï¼ - m[1][1] / 6ï¼åº6ç¹ï¼ - m[1][2] / 6ï¼åº5ç¹ï¼ - m[1][3] / 6ï¼åº4ç¹ï¼ - m[1][4] / 6ï¼åº3ç¹ï¼ - m[1][5] / 6ï¼åº2ç¹ï¼ - m[1][6] / 6ï¼åº1ç¹ï¼ ''' ret = [] matrix = [[0] * (n * 6) for i in xrange(n)] for i in xrange(6): # åå§å1个骰åçç»æ matrix[0][i] = 1.0 / 6.0 for i in xrange(n - 1): for j in xrange(i, (i + 1) * 6): prob = matrix[i][j] / 6 for k in xrange(1, 7): # å©ç¨matrx[i][j]æ´æ°matrix[i + 1][j + k] matrix[i + 1][j + k] += prob for i in xrange(n - 1, n * 6): ret.append([i + 1, matrix[-1][i]]) return ret # hard: http://lintcode.com/problem/dices-sum