poj 2537 DP
挺简单的DP,可是没有注意到数据会超范围,上官网搜了数据才知道,后来改成了__int64,发现还是不行,改成double,AC了
带血的AC。。。
#include<stdio.h> #include<string.h> double dp[110][15]; int main() { int k,n; int i,j; while(scanf("%d%d",&k,&n)!=EOF) { memset(dp,0,sizeof(dp)); for(i=1;i<=k+1;i++) dp[1][i]=1; for(i=2;i<=n;i++) for(j=1;j<=k+1;j++) dp[i][j]=dp[i-1][j]+dp[i-1][j-1]+dp[i-1][j+1]; double ans=0; for(i=1;i<=k+1;i++) ans+=dp[n][i]; for(i=1;i<=n;i++) ans/=(k+1); ans*=100; printf("%.5lf\n",ans); } return 0; }