阿里机器学习笔试第一题80% 求大佬指教~

是小明拿奖金的概率的那题,

#include <iostream>
#include <vector>
#include <string.h>
#include <algorithm>
#include <map>
#include <unordered_map>
#include <math.h>
#include<set>
using namespace std;
int main(){
    int n;
    cin>>n;
    vector<double> vec;
    double p;
    for (int i = 0; i < n; ++i) {
        cin>>p;
        vec.push_back(p);
    }
    cout.precision(4);
    if(n<=0 || vec[0] <= 0){
        cout<<0<<endl;
        return 0;
    }
    double sum = 0;
    int innerflag = 0;
    double tmp = 1;
    for (int j = 0; j < 100; ++j) {
        for (int i = 0; i < n; ++i) {
            if(1 - innerflag == 1) {
                sum += tmp * vec[i];
            }
            tmp = tmp * (1.0000-vec[i]);
            innerflag = 1 - innerflag;
        }
        if(tmp < 0.00003 || sum >= 0.9999){
            break;
        }
    }
    cout.precision(4);
    cout<<sum<<endl;
    return 0;
}

-----------------更新-----------------
错在没有理解对题意,我的代码是把p1,p2,...,pn当做一轮,但实际题意为每次算一轮,所以要去掉外层那个100次循环,还要加上判停条件~我知道错了,大佬们不要再鞭尸啦! 回复里有大佬们写的正确代码

#阿里巴巴##机器学习##笔试题目##春招#
全部评论
# -*- coding: utf-8 -*- # Created by Ross on 19-4-12 n = int(input()) if n < 1:     exit() neg = 1  # 表示前面两人都抽不中的概率 c = 0 ps = [] for i in range(n):     p = float(input())     ps.append(p) i = 0 while i < 100:     if i % 2 == 0:  # 轮到小明         p = ps[i % n]         c += neg * p         neg *= (1 - p)     else:  # 轮到小华         p = ps[i % n]         neg *= 1 - p     i += 1 print('%.4f' % c)
点赞 回复 分享
发布于 2019-04-12 21:19
    intN;        cin >> N;          vector<double> p(N);     for(inti = 0; i < N; i++)     {         cin >> p[i];     }     vector<double> p100(100);     for(inti = 0; i < 100; i++)     {         intindex = i % N;         p100[i] = p[index];     }       doublesum = 0.0;     doublepre = 1.0;     for(inti = 0; i < 50; i+=2)     {         sum += pre * p100[i];         pre *= ((1.0 - p100[i]) * (1.0 - p100[i + 1]));     }       printf("%.4f\n", sum);
点赞 回复 分享
发布于 2019-04-12 21:11
题意都没懂,大佬能一下思路吗?
点赞 回复 分享
发布于 2019-04-12 21:18
感觉你理解错问题了,100轮是指两个人没有得到钱总共加起来的次数,所以不应该用两层循环
点赞 回复 分享
发布于 2019-04-12 21:36
感觉这个题意都没理解
点赞 回复 分享
发布于 2019-04-13 17:04

相关推荐

喜欢走神的孤勇者练习时长两年半:池是池,发是发,我曾池,我现黑
点赞 评论 收藏
分享
点赞 13 评论
分享
牛客网
牛客企业服务