共有n种图案的印章,每种图案的出现概率相同。小A买了m张印章,求小A集齐n种印章的概率
我的代码哪里有问题啊,为什么只对了37%?呜
#include<stdio.h>
#include<math.h>
#include<string.h>
int main()
{
int m,n,i,j; //dp[i][j]表示到第i个印章,集齐了j个图案的概率
float dp[21][21];
scanf("%d%d",&m,&n);
memset(dp,0,sizeof(dp));
//dp[1][1]=1; //第一个印章肯定是一种图案
for(i=1;i<=m;i++)
for(j=1;j<=i;j++)
{
if(j==1) dp[i][j]=pow(1.0/n,i-1); //前i个印章都是一种
else dp[i][j]=dp[i-1][j]*j*1.0/n+dp[i-1][j-1]*(n-j+1)*1.0/n;
//dp[i-1][j]表明di个印章前面一定出现了,dp[i-1][j-1]表明di个印章前面一定没有出现过
}
printf("%.4f",dp[m][n]);
return 0;
}