题意:

买东西集齐全套卡片赢大奖。每个包装袋里面有一张卡片或者没有。

已知每种卡片出现的概率 p[i],以及所有的卡片种类的数量 n(1<=n<=20)。

问集齐卡片需要买东西的数量的期望值。

一开始,自己所理解的期望值是原来学过的  一个值*它自身发生的概率,这没错,但是不知道在这一题里面 那个值是多少

经过重重思考和挣扎最后明白了,这一题中,n就是那个值,也是你要求的,感觉理解这个好难,但是好重要,

此题中,将n设置为 dp[0]

可以这样想,你要买sum包,才能集齐n种卡片,那么 你最后买的一包一定中奖,即一定是n种中的一种,

用状态压缩表示,dp[1111111]就表示,你现在可以要n包中的一包,也就是可以变成0111111,1011111,1101111.。。。1111110中的一种状态

dp[1111111]=上面列的所有的状态 乘以 中0那包的概率,即dp[i]+=dp[i|(1<<j)]*p[j];

而dp[1111111]表示刚开始,你可以中任一种,它的期望值是0,因为你现在任一种都没有,

dp[0000000]即 dp[0] 则表示现在每一包都有,你已经不用买了,从直观上就可以理解为每位都是0,你没有选择了,

那么,给初值dp[(1<<n)-1]=0,

从这开始,对每一种状态,列举它的每一位,如果是0,则可以变成该位是1的状态,

恩,,差不多就是这样吧。。

不知道自己的理解是否正确 觉得关键还是期望值的意义和最后的结果的意义不太能理解。。

反正我只能理解到这一步了,望批评指正交流

关于容斥原理的解法,还没怎么想,大家可以百度下 ,看起来好简单的样子

下面是参考代码,大家感受下

#include<iostream>
#include<cstdio>
#include<cmath>
#include<cstring>
#include<algorithm>
#include<string>
using namespace std; double p[25],dp[1<<20]; int main()
{
int i,j,n;
double pp;
while(~scanf("%d",&n))
{
for(i=0;i<n;i++)
scanf("%lf",&p[i]);
dp[(1<<n)-1]=0;
for(i=(1<<n)-2;i>=0;i--)//枚举所有状态
{
pp=0;
dp[i]=1;
for(j=0;j<n;j++)//对每一位枚举
{
if(!(i&(1<<j)))//该位是0
{
dp[i]+=dp[i|(1<<j)]*p[j];
pp+=p[j];
}
}
dp[i]/=pp;//可以到达i这种状态的状态都找到了 在循环里累加的是期望值 要除概率和
}
printf("%lf\n",dp[0]);
}
return 0;
}

最新文章

  1. [LeetCode] Repeated DNA Sequences 求重复的DNA序列
  2. ASP.Net MVC3 图片上传详解(form.js,bootstrap)
  3. HTTP版本进化过程
  4. Opacity多浏览器透明度兼容处理
  5. day02-java
  6. iOS7中如何去除UINavigationbar下边的那条黑线
  7. (剑指Offer)面试题27:二叉搜索树与双向链表
  8. C++ STL之排序算法
  9. dedecms
  10. 建索引让SQL飞起来
  11. Windows的应用管理工具 PortableApps,Chocolatey和Ninite
  12. POJ 2392 Space Elevator 背包题解
  13. 2.Perl基础系列之入门
  14. ERP顾问工作中应该注意哪些工作是不该做的
  15. 【科普】什么是TLS1.3
  16. python-进程池与线程池,协程
  17. 深入探讨JavaScript如何实现深度复制(deep clone)
  18. 【BZOJ1053】 反素数ant
  19. myisam与innodb索引比较
  20. bzoj1193 马步距离

热门文章

  1. SqlDataReader对象的NextResult方法读取存储过程多个结果集
  2. python开源包提交到pypi社区
  3. Java 8新特性之集合
  4. grails中报Cannot create a session after the response has been committed异常的解决办法
  5. 配置Texmaker中文支持
  6. 《C陷阱与缺陷》读书笔记
  7. web前端笔试题
  8. LeetCode(5) - Longest Palindromic Substring
  9. Chapter 7 Windows下pycaffe的使用之draw_net.py
  10. Classic Source Code Collected