动态规划-最后剩下的是红糖的概率问题
来源:互联网 发布:电脑装机必备软件 编辑:程序博客网 时间:2024/04/30 19:34
google面试原题: 有m个红糖,n个白糖,每次取一颗糖,如果取到红糖,直接吃掉,如果取到白糖则放进去再取一颗,再取的这一颗无论是什么颜色都吃掉。问最后剩下的那颗是红糖的概率。这题是用动态规划做的,从m=1, n=0 m=1, n=1开始推,能找出一个状态转移方程(也就是代码里面那个p[i][j] = xxxx 的式子)
上代码:
#include <iostream>#include <vector>using namespace std;double get_prob(int m, int n, vector<vector<double>> &p) {for(int i=1; i<=m; i++) {for(int j=1; j<=n; j++) {p[i][j] = (double)i/(i+j)*p[i-1][j] //fetch one red + ((double)j/(i+j)) //fetch one white * ( ((double)i/(i+j)) * p[i-1][j] //then, fetch one red + ((double)j/(i+j)) * p[i][j-1] ); //or, fetch one white}}return p[m][n];}int main() {int m, n;m = 2;n = 1;vector<vector<double>> prob(m+1, vector<double>(n+1, 0.0));//when white candy is 0, red candy is from 1 to m, the probability is 1for(int i=1; i<=m; i++) {prob[i][0] = 1.0;}cout << get_prob(m, n, prob) << endl;return 0;}
0 0
- 动态规划-最后剩下的是红糖的概率问题
- 约瑟夫环的问题---最后剩下哪一个
- 【数学】约瑟夫环问题中,最后剩下的人是第几个人
- 动态规划问题--最长公共子序列(LCS)问题--删除一些字符使得剩下的是一个回文子串
- 动态规划解投硬币的概率问题
- 1,2报数最后剩下的人的问题
- 最后剩下的是什么呢?
- 圆圈最后剩下的元素
- 约瑟夫问题(圆圈中最后剩下的数)
- 圆圈中最后剩下的数字(约瑟夫环问题)
- 圆圈报数最后剩下的数 约瑟夫环问题 Joseph
- 圆圈中最后剩下的数字(约瑟夫环问题)
- 圆圈中最后剩下的数字(约瑟夫环问题)
- 圆圈中最后剩下的数字(约瑟夫环问题)
- 圆圈中最后剩下的数字(约瑟夫环问题)
- 圆圈中最后剩下的数字(约瑟夫环问题)
- 黑球,白球各100,问最后剩下一个是黑球的概率。
- 《编程之美》中黑球,白球各100,问最后剩下一个是黑球的概率
- 根据前序和中序列 重建二叉树
- review of retrieving stock market quotes on web
- poj1062昂贵的聘礼
- linux下查看内存泄露
- 合并音视频
- 动态规划-最后剩下的是红糖的概率问题
- 使用JDBC 插入向数据库插入对象
- 【C++ Primer】用于大型程序的工具
- Java语言入门教程
- 程序员为什么要加班
- 使用8个8进行任意拼接和四则运算,算出1000的计算步骤
- 设计模式一日一练:状态模式(State)
- File类基本操作之OutputStream字节输出流
- 设计模式一日一练:职责链模式(Chain Of Responsibility)