找出Python中具有n个或更少点的可能性的程序
假设我们正在玩一个独特的游戏,并且我们有三个值n,k和h。我们从0点开始,然后我们可以从1到h(包括1和h)之间随机选择一个数字,然后得到那么多点。当我们获得至少k分时,我们将停止。我们必须找到n点或更少点的概率。在这里,可以随机选择任何数量,并且结果都有相同的概率。
因此,如果输入类似于n=2,k=2,h=10,则输出将为0.11。
为了解决这个问题,我们将遵循以下步骤-
定义一个功能dp()。这将走道路。
返回1
返回0
返回(n−k+1和h的最小值)/h
如果路径与k−1相同,则
如果path>n,则
如果路径>=k,则
返回dp(path+1)-(dp(path+h+1)-dp(path+1))/h
在主要功能中,执行以下操作-
如果k为零,则
返回1
如果n<k
返回0
返回dp
让我们看下面的实现以更好地理解-
示例
class Solution: def solve(self, n, k, h): if not k: return 1 if n < k: return 0 def dp(path): if path == k− 1: return min((n− k + 1), h) / h if path > n: return 0 if path >= k: return 1 return dp(path + 1)− (dp(path + h + 1)− dp(path + 1)) / h return dp(0) ob = Solution() print(ob.solve(2,2,10))
输入值
2,2,10输出结果
0.11