| ||||||||||
| Online Judge | Problem Set | Authors | Online Contests | User | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest | |||||||||
又是一个莫名其妙的错误,将DP中的=改为先赋成零,然后+=就可以了,In Reply To:WA得不行了,高手指点 Posted by:pillar at 2006-09-10 13:16:03 > #include <stdio.h>
> #include <string.h>
> double arr[1002][101];
> int main(){
> int c,m,n,i,j;
> while (scanf("%d",&c))
> {
> if (!c) break;
> scanf("%d%d",&n,&m);
> memset(arr,0,sizeof(arr));
>
> if (m>c||m>n){ printf("0.000\n"); continue; }
>
> if (n>1000)
> {
> if (n%2) n = 1001;
> else n = 1000;
> }
>
> arr[1][1] = 1;
> for (i=2;i<=n;++i)
> {
> for (j=0;j<=c;++j)
> {
> if (!j)
> arr[i][j] = arr[i-1][1]/c;
> else if (j==c)
> arr[i][j] = arr[i-1][c-1]/c;
> else arr[i][j] = arr[i-1][j-1]*(c-j+1)/c + arr[i-1][j+1]*(j+1)/c;
> }
> }
> printf("%.3lf\n",arr[n][m]);
> }
> return 0;
> }
Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator