zoukankan      html  css  js  c++  java
  • 抛硬币

    Description

    James得到了一堆有趣的硬币,于是决定用这些硬币跟朋友们玩个小游戏。在一个N行M列的表格上,每一个第i行第j列的格子上都放有一枚James的硬币,抛该硬币正面朝上的概率为Pij,所有抛硬币事件两两之间是相互独立的。

    现在,玩家在M列硬币中,从每一列里各选择1枚,共M枚,构成一组。如此重复选择N组出来,且保证被选择过的硬币不能再选。选好组之后,每组的M枚硬币各抛一次,如果都是正面朝上,则该组胜利,总分赢得1分;否则该组失败,总分不加也不减。请问,如果让你自行选择硬币的分组,游戏总得分的数学期望的最大值是多少?

    Input

    输入有多组数据。每组数据第一行为N和M,1≤N≤100,1≤M≤10,以空格分隔。接下来有N行,每行M个小数,表示表格中对应的Pij

    输入以N=M=0结束,这组数据不输出结果。

    Output

    对于每组数据,输出对应游戏总得分的数学期望的最大值,四舍五入精确至4位小数。每组数据的输出占一行。

    Sample Input

    2 3
    1.0 1.0 1.0
    0.5 0.4 0.3
    0 0
    

    Sample Output

    1.0600

    Hint


    Submit Page


    #include<iostream>
    #include<cstring> 
    #include<cstdio>
    #include<cmath>
    #include<algorithm>
    using namespace std;  
    double a[110][25];  
    int vis[110][25];  
    int main()  
    {  
        int n,m;  
        while(~scanf("%d%d",&n,&m))  
        {  
            memset(vis,0,sizeof(vis));  
            if(n==0&&m==0)   
                break;  
            
            for(int i=0; i<n; i++)  
            {  
                for(int j=0; j<m; j++)   
                    scanf("%lf",&a[i][j]);  
                 
            }  
            double ans=0.0;  
            int count = 0;  
            while(1)  
            {  
                double mul=1.0;  
                for(int j=0; j<m; j++)
                {  
                    double Max=-1;  
                    int x=-1;  
                    int y=-1;  
                    for(int i=0; i<n; i++)  
                    {  
                        if(vis[i][j]==0&&a[i][j]>Max) 
                        {  
                            Max=a[i][j];  
                            x=i;
                            y=j;  
                        }  
                    }  
                    vis[x][y]=1;  
                    mul=mul*Max;  
                }  
                ans=ans+mul;  
                count++;  
                if(count==n)   
                    break;  
                  
            }  
            printf("%.4lf
    ",ans);  
        }  
        return 0;  
    }  
    /**********************************************************************
    	Problem: 1009
    	User: song_hai_lei
    	Language: C++
    	Result: AC
    	Time:4 ms
    	Memory:2056 kb
    **********************************************************************/
    



  • 相关阅读:
    iOS 苹果开发证书失效的解决方案(Failed to locate or generate matching signing assets)
    iOS NSArray数组过滤
    App Store2016年最新审核规则
    iOS 根据字符串数目,自定义Label等控件的高度
    iOS 证书Bug The identity used to sign the executable is no longer valid 解决方案
    Entity FrameWork 增删查改的本质
    EF容器---代理类对象
    Entity FrameWork 延迟加载本质(二)
    Entity FrameWork 延迟加载的本质(一)
    Entity FrameWork 增删查改
  • 原文地址:https://www.cnblogs.com/csushl/p/9386559.html
Copyright © 2011-2022 走看看