暴力搜索题——”比赛”

比赛

https://ac.nowcoder.com/acm/problem/14734

不难理解,第i题不能做出来的概率等于(1-a[i])(1-b[i])(1-c[i]);则能够做出来的概率d[i]=1-(1-a[i])(1-b[i])(1-c[i])。由于本题数量级很小,就用一个dfs就可以了。(其实是我不会其他的方法—。—)

#include"bits/stdc++.h"
using namespace std;
double a[12];
double b[12];
double c[12];
double d[12];
double ans[13];

void dfs(int count,int i,double gailv){
    //count代表已经走过的题数,i代表做对的个数,gailv代表当前情况的概率是多少
    if(count==12){
        ans[i]+=gailv;//如果走完了这12道题目,那么把这一种情况的概率加上
        return ;
    }
    dfs(count+1,i+1,gailv*d[count]);
    dfs(count+1,i,gailv*(1-d[count]));
    //第一:这一题做对,i加1,概率变为当前的概率×做对的概率
    //第二:这一题做错,i不变,概率变为当前的概率×做错的概率
}


int main() {
    fill(ans,ans+13,0);
    int i,j;
    for(i=0;i<12;++i){
        cin>>a[i];
    }
    for(i=0;i<12;++i){
        cin>>b[i];
    }
    for(i=0;i<12;++i){
        cin>>c[i];
    }

    for(i=0;i<12;++i){
        d[i]=1-((1-a[i])*(1-b[i])*(1-c[i]));
    }

    dfs(0,0,1.0);

    for(i=0;i<13;++i){
        printf("%.6lf\n",ans[i]);
    }

    return 0 ;
}
全部评论

相关推荐

喜欢核冬天的哈基米很想上市:会爆NullPointerException的
点赞 评论 收藏
分享
学java时间比较短不到三个月,基本的技术栈都过了一遍就是都不太深,有个小项目。是继续找实习还是沉淀准备秋招呢?找实习的话会花很多时间在八股,放弃的话又怕秋招简历太难看。有无大佬支招
今天java了吗:1.一定要找实习,实习不一定要去,但是找实习过程中的面试经验和心态经验才是最重要的 2.八股本来就是大头,甚至比项目重要 3.这个时间段也是面试比较多的阶段,可以抓住机会锻炼。面试才会发现自己的不足,感觉自己会了和能给面试官娓娓道来是两码事
点赞 评论 收藏
分享
评论
2
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务