其实懂了之后很简单,但是刚开始真的很难想.。 d[a][b]表示剩a张A类票和b张B类票时,最后两张票相同的概率
那么此时的排队的第一个人只有两种选择 拿A类票或者B类票
抛硬币得到的可能性当然是二分之一,所以说d[i-1][j](当前第一人拿了A类票)和d[i][j-1](当前第一人拿了B类票)各占二分之一
这样的话代码就很简单了。。。。
#include<stdio.h> #include<iostream> using namespace std; double d[1500][1500]; int main() { int n,i,j; scanf("%d",&n); n/=2; for (i=2;i<=n;i++) { d[i][0]=d[0][i]=1; } for (i=1;i<=n;i++) { for (j=1;j<=n;j++) { d[i][j]=(d[i-1][j]+d[i][j-1])*0.5; } } printf ("%.4lf",d[n][n]); return 0; }
原文地址:https://www.cnblogs.com/Xchu/p/11604516.html
时间: 2024-11-13 09:57:29