题意:
给你NCOWS只牛,NCARS辆车,NSHOW扇开启的门( NSHOW < NCOWS)
问:换门后赢得车的概率是?
思路:
我们首先用分类讨论的思想得出三门问题的答案:
P(赢得汽车) = P(最开始选的那扇门后是山羊)*P(在最开始选的那扇门后是山羊的情况下剩下那扇门后是车)+P(最开始选的那扇门后是车)*P(在最开始选的那扇门后是车的情况下剩下那扇门后是车)
用专业术语来说,设A={最开始选的那扇门后是山羊},B={第二次选的门后是车}
则由全概率公式得:
那么对于此题,同样可以用上面的公式计算得出:
根据此公式可以写出代码。
AC代码
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <cmath>
#include <cstdlib>
using namespace std;
typedef long long ll;
const int INF = 0x3f3f3f3f;
double ncows, ncars, nshow;
//A={最开始选的那扇门后是山羊},B={第二次选的门后是车}
//P(B) = P(A)*P(B|A) + P(!A)*P(B|!A);
int main() {
while(scanf("%lf%lf%lf",&ncows,&ncars,&nshow) != EOF) {
double ans = ((ncows+ncars-1)*ncars) / ((ncows+ncars) * (ncows + ncars - 1 - nshow));
printf("%.5lf\n",ans);
}
return 0;
}