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;
}

  

posted @ 2011-11-18 20:14  Because Of You  Views(240)  Comments(0Edit  收藏  举报