hdu 4870 期望问题(高斯消元)

来源:互联网 发布:网络被管理员禁止访问 编辑:程序博客网 时间:2024/05/16 10:50
/*初学概率期望问题参考:http://blog.csdn.net/a601025382s/article/details/38047905*/#include<stdio.h>#include<string.h>#include<math.h>#include<string.h>#include<iostream>using namespace std;#define N  300struct node {    double ma[N][N];}a;void gauss(int n) { int i,j,k,r; for(i=0;i<n;i++) {    r=i;    for(j=i+1;j<n;j++)       if(fabs(a.ma[j][i])>fabs(a.ma[r][i]))r=j;    if(r!=i) {        for(j=0;j<=n;j++)            swap(a.ma[r][j],a.ma[i][j]);    }    for(k=0;k<n;k++)        if(k!=i)        for(j=n;j>=i;j--)        a.ma[k][j]-=a.ma[k][i]/a.ma[i][i]*a.ma[i][j]; } for(i=n-1;i>=0;i--) {    for(j=i+1;j<n;j++)        a.ma[i][n]-=a.ma[j][n]*a.ma[i][j];    a.ma[i][n]/=a.ma[i][i]; } return ;}int main() {     double p;     int i,j;     while(scanf("%lf",&p)!=EOF) {        memset(a.ma,0,sizeof(a.ma));    for(i=0;i<20;i++) {    if(i==0) {        a.ma[i][i]=p;        a.ma[i][i+1]=-p;    }    else        if(i==1) {            a.ma[i][i]=1;            a.ma[i][i+1]=-p;            a.ma[i][0]=p-1;        }    else {        a.ma[i][i]=1;        if(i!=19)        a.ma[i][i+1]=-p;        a.ma[i][i-2]=p-1;    }    a.ma[i][20]=1;    }    gauss(20);    printf("%.6f\n",a.ma[0][20]*2-a.ma[19][20]);     }return 0;}

0 0
原创粉丝点击