UVa OJ 542

1、这道题考条件概率。。。刚开始temp=(2<<j)让我给写成temp=2*(j+1)了~不过发现后一次AC了~

#include<cstdio>
#include<iostream>
#include<string>
using namespace std;
int main(){
    //freopen("a.txt","r",stdin);
    string s[16];
    double a[16][16],d[16][5],p,sum;
    int temp;
    for(int i=0;i<16;i++)
        cin>>s[i];
    for(int i=0;i<16;i++)
       for(int j=0;j<16;j++){
          scanf("%d",&temp);
          a[i][j]=(double)temp/100;
       }
    for(int i=0;i<16;i++)
        d[i][0]=1;
    for(int j=0;j<4;j++){
       temp=(2<<j);
       for(int i=0;i<16;i++){
          p=sum=0;
          for(int k=0;k<16;k++){
              if(i/temp==k/temp&&i/(temp/2)!=k/(temp/2))
                 sum+=d[k][j];
          }
          for(int k=0;k<16;k++){
              if(i/temp==k/temp&&i/(temp/2)!=k/(temp/2))
                 p+=d[k][j]/sum*a[i][k];
          }
          d[i][j+1]=d[i][j]*p;
       }
    }
    for(int i=0;i<16;i++)
       printf("%-10s p=%.2lf%%\n",s[i].c_str(),d[i][4]*100);
    return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值