poj 1322 Chocolate (概率dp)

2015-07-20 17:33:12 · 作者: · 浏览: 4
///有c种不同颜色的巧克力,一个个的取,当发现有相同的颜色的就吃掉,去了n个后,到最后还剩m个的概率
///dp[i][j]表示取了i个还剩j个的概率
///当m+n为奇时,概率为0
# include 
  
   
# include 
   
     # include 
    
      # include 
     
       using namespace std; double dp[1010][1010]; int main() { int i,j,n,m,c; while(~scanf("%d",&c),c) { scanf("%d%d",&n,&m); if(m>
c||m>n||(n+m)%2) printf("0.000\n"); else { if(n>1000) n=1000+n%2; memset(dp,0,sizeof(dp)); dp[0][0]=1; for(i=1;i<=n;i++) { dp[i][0]=dp[i-1][1]/c; dp[i][c]=dp[i-1][c-1]/c; for(j=1;j