算法-连胜概率问题-10把连胜3把概率
有一位朋友突然问我一道连胜的概率问题,自己研究一下,和大家分享,同时记录一下。
问题描述
小明每天玩10盘王者荣耀,且胜负完全随机(胜率50%),请用JS写一个模拟算法,算出小明今天获得过至少一次3连胜的概率,并指出该算法的时间与空间复杂度。
解题思路
- 简单暴力 穷举法
- 枚举找规律
这里采用穷举法(为了提高效率后期可以考虑“裁剪分支”)
10把游戏连续赢3把的概率,输赢概率百分之五十
可以将问题转化成一棵二叉树问题
问二叉树的根结点data为3,左子树根为赢,左子树根data为根结点data减去1,即为2,右子树根节点为输,右子树根data为重置为3,当某结点data为0时候,它以下所有结点data均为0
最终,求解叶子结点中 data为0与叶子总数的比例
public class DemoTest {
private final static Integer INIT_WIN_COUNT=3;
public static void main(String[] args) {
execute(10,INIT_WIN_COUNT);
}
private static void execute(Integer level,Integer winCount){
GameTree gameTree = buildTree(level, winCount);
System.out.println("满足条件的次数是:"