集图案算法训练

文章讲述了使用动态规划方法计算在n种印章中,使用i张印章集齐j种印章的概率,通过递推公式展示了dp[i][j]的计算过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

共有n种印章,则每个印章的概率为p=1/n;

当i<j时,dp[i][j]==0;

dp[0][0]表示用一张印章集齐一种印章的概率,共有n种,每个印章的概率为p则dp[0][0]=n*p=1;

dp[1][0]表示用两张印章集齐一种印章的概率,第一张印章可以有n种,第二张印章只有和第一张印章一样才符合,则dp[1][0]=n*p*(1*p)=p;

dp[2][0]=n*p*(1*p)*(1p)=p^2

dp[i][0]表示用i张印章集齐一种印章的概率则dp[i][0]=p^i;

dp[1][1]表示用两张印章集齐两种印章的概率,第一张印章可以有n种每个印章的概率为p,第二张印章不能为第一种,就有n-1种,每一种的概率为p,则dp[1][1]=(n*p)*((n-1)*p);

dp[2][2]表示用三张印章集齐三种印章,dp[2][2]=(n*p)*((n-1)*p)*((n-2)*p)把前半部分用dp[1][1]带换一下dp[2][2]=dp[1][1]*((n-2)*p)

(i==j)时则dp[i][j]=dp[i-1][j-1]*((n-i)*p)

i!=j时

dp[2][1]表示用三张印章集齐两种印章的概率,可分为两种情况;第一种是用前两次印章集齐了两种第三次印章可以是这两种印章中的任意一种则dp[1][1]*(2*p);第二种情况是前两次只集了一种印章,第三次印章是在其余印章中的一种则dp[1][0]*((n-1)*p);

则dp[2][1]=dp[1][1]*(2*p)+dp[1][0]*((n-1)*p)

dp[i][j]表示用i+1张印章集齐j+1种印章的概率,分两种:第一种前i张集齐了j+1种第i+1张可以是j+1中任意的dp[i-1][j]*((j+1)*p)第二种是前i张集齐了j种,第i+1张拿到了其余(n-j)中的一种dp[i-1][j-1]*(n-j)*p即dp[i-1][j-1]*(n-j)*p.

则dp[i][j]=dp[i-1][j]*((j+1)*p)+dp[i-1][j-1]*(n-j)*p;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值