|
发表于 2018-1-24 08:56:56
|
显示全部楼层
请教楼主,遇到这样一个题,用python3.4.3做符合预期,可以提交到这个网站上结果老是不对。
题目链接: http://www.lintcode.com/zh-cn/problem/dices-sum/
- 题目:
- 扔 n 个骰子,向上面的数字之和为 S。给定 Given n,请列出所有可能的 S 值及其相应的概率。
- 样例
- 给定 n = 1,返回 [ [1, 0.17], [2, 0.17], [3, 0.17], [4, 0.17], [5, 0.17], [6, 0.17]]。
复制代码
- 1. 用python3.4.3写的如下代码,没有问题。
- from itertools import product
- def f(n):
- result = dict([[i, 0] for i in range(n, 6*n+1)])
- a = product([1,2,3,4,5,6], repeat = n)
- total = 0
- for i in a:
- s = sum(i)
- total += 1
- result[s] += 1
- for i in result:
- result[i] = round(result[i]/total, 2)
- return [[i, result[i]] for i in result]
- print(f(1))
- # 输出: [[1, 0.17], [2, 0.17], [3, 0.17], [4, 0.17], [5, 0.17], [6, 0.17]]
复制代码
- 2. 提交的答案:
- class Solution:
- # @param {int} n an integer
- # @return {tuple[]} a list of tuple(sum, probability)
- def dicesSum(self, n):
- # Write your code here
- from itertools import product
- result = dict([[i, 0] for i in xrange(n, 6*n+1)])
- a = product([1,2,3,4,5,6], repeat = n)
- total = 0
- for i in a:
- s = sum(i)
- total += 1
- result[s] += 1
- for i in result:
- result[i] = round(result[i]/total, 2)
- return [[i, result[i]] for i in result]
- #提示:
- 输入
- 1
- 输出
- [[1,0.00],[2,0.00],[3,0.00],[4,0.00],[5,0.00],[6,0.00]]
- 期望答案
- [[1,0.17],[2,0.17],[3,0.17],[4,0.17],[5,0.17],[6,0.17]]
复制代码
|
|