题目链接: https://vjudge.net/problem/UVA-11181
题目描述: 有n个人, 已知每个人买东西的概率, 现在n个人中一共有r个人买了东西, 问每个人实际买东西的概率是多少
解题思路: 一开始我设Xi为第i个人实际买东西的概率, X1 + X2 + ...... + Xn == r, 又已知P1*X1 + P2*X2 + ...... + Pn*Xn == 1 求每一个Xi, 我又犯蠢了, 我竟然想这样求出来每一个Xi......如果这道题Xi为已知求Pi就能求了, 但是这样是求不出来的啊, 应该用条件概率来求, P(Ei|E) = P(Ei&&E) / P(E) 这里的事件E就是N个人里面有r个人买东西的概率, 递归求一下就可以了, 函数是dfs( int id, int cnt ) 当cnt == r的时候, 更新P(E)的同时也更新一下P(Ei&&E)就可以了
代码:
#include#include #include #include #include #include #include #include #include #include #include
思考: 函数递归都写不好了啊......是真的菜, 代码能力不强是真的伤, 还有就是遇到概率问题就要向知识点上去转化, 根据公式去计算, 不要凭直觉去算, 这样往往都是错误的, 是题目给你留的坑, 跳进去就是死胡同