zoukankan      html  css  js  c++  java
  • poj 2151 Check the difficulty of problems 夜

    http://poj.org/problem?id=2151

    dp不是问题 问题在于这是道数学题 亲人呀 最恨数学题

    尤其是和概率有关 代码很乱呀 有木有

    #include<iostream>
    #include<string>
    #include<string.h>
    #include<queue>
    #include<math.h>
    #include<stdio.h>
    #include<map>

    using namespace std;
    double probability[1005][35];
    double a[35][35];
    double dp(int i,int j,int l)
    {
        if(a[i][j]>=0.0)
        {
            return a[i][j];
        }
        if(j==0)
        {
            if(i==1)
            a[i][j]=(1-probability[l][i]);
            else
            a[i][j]=(1-probability[l][i])*dp(i-1,0,l);
            return a[i][j];
        }
        if(j==1&&i==1)
        {
           a[i][j]=probability[l][i];
           return a[i][j];
        }
        if(i<j)
        {
            a[i][j]=0.0;
            return a[i][j];
        }
        if(i==j)
        {
            a[i][j]=probability[l][i]*dp(i-1,j-1,l);
            return a[i][j];
        }
        if(i>j)
        {
            a[i][j]=probability[l][i]*dp(i-1,j-1,l);
            a[i][j]=a[i][j]+dp(i-1,j,l)*(1-probability[l][i]);
            return a[i][j];
        }

    }
    int main()
    {

        int m,t,n;
        while(scanf("%d %d %d",&m,&t,&n)!=EOF)
        {
            if(m==0&&t==0&&n==0)
            break;
            double w,anstemp=1.0;
            for(int i=1;i<=t;++i)
            {
                w=1.0;
                for(int j=1;j<=m;++j)
                {
                    scanf("%lf",&probability[i][j]);
                    w=w*(1.0-probability[i][j]);
                }
                anstemp=anstemp*(1.0-w);
            }
            double ans=1.0;
            for(int l=1;l<=t;++l)
            {
                for(int i=0;i<=m;++i)
                {
                    for(int j=0;j<=m;++j)
                    {
                        a[i][j]=-1.0;
                    }
                }
                w=0.0;
                int i;
                for(i=1;i<n;++i)
                {
                    w=w+dp(m,i,l);
                }

                ans=ans*(w);
            }
            printf("%.3f\n",anstemp-ans);

        }
        return 0;
    }

  • 相关阅读:
    今天是JVM的生日,来了解下JVM的发展历史吧
    python 天天生鲜项目
    django中设置定时任务
    django-rest-framework视图和url
    rest_framework-分页
    rest_framework-序列化-1
    rest_framework-解析器
    django-rest-framework版本控制
    django-rest-framework限流
    django-rest-framework权限验证
  • 原文地址:https://www.cnblogs.com/liulangye/p/2459844.html
Copyright © 2011-2022 走看看