码迷,mamicode.com
首页 > 其他好文 > 详细

uva10648 概率dp

时间:2017-09-05 18:56:41      阅读:99      评论:0      收藏:0      [点我收藏+]

标签:names   .net   ++   log   概率   col   std   sizeof   include   

https://vjudge.net/problem/UVA-10648

  将n个不同小球放入m个不同盒子,放入每个盒子的概率相同,问放完之后仍有空盒子的概率;

  还是太傻- -,可以倒着计算出放完之后没有空盒子的概率,在让1减去就是答案,这样好写一点。

  f[i][j]表示i个球放入m盒子无空盒子的概率,则 f[i][j]=f[i-1][j-1]*((M-j+1)/M)+f[i-1][j]*(j/M);

 

 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 #define LL long long
 4 #define qz q.size()
 5 double f[105][105];
 6 int main()
 7 {
 8     int N,M,i,j,k=0;
 9     while(cin>>N&&N!=-1){
10             cin>>M;
11     memset(f,0,sizeof(f));
12     f[0][0]=1;
13     for(i=1;i<=N;++i)
14     {
15         for(j=1;j<=M;++j)
16         {
17             f[i][j]=f[i-1][j-1]*(1.0*(M-j+1)/M)+f[i-1][j]*(1.0*j/M);
18         }
19     }
20     printf("Case %d: %.7f\n",++k,1-f[N][M]);
21     }
22     return 0;
23 }

 

uva10648 概率dp

标签:names   .net   ++   log   概率   col   std   sizeof   include   

原文地址:http://www.cnblogs.com/zzqc/p/7479935.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!