0
点赞
收藏
分享

微信扫一扫

算法-印章

unadlib 2022-03-11 阅读 54
import java.util.Scanner;

public class Main {
public static void main(String[] args) {
	Scanner sc=new Scanner(System.in);
	int n=sc.nextInt();
	int m=sc.nextInt();
	
	double p=1.0/n;
	double[][] dp=new double[m+1][n+1];
	for(int i=1;i<=m;i++)
	{
		for(int j=1;j<=n;j++){
			if(i<j){
				//i<j时,不可能凑齐
				dp[i][j]=0;
			}else if(j==1){
				//j=1,买了i张凑齐j种,dp=p的i-1次方
				dp[i][j]=Math.pow(p, i-1);
			}else{
				dp[i][j]=dp[i-1][j]*(j*p)+dp[i-1][j-1]*((n-j+1)*p);
			}
		}
	}
	System.out.printf("%.4f",dp[m][n]);
	}

}

参考:蓝桥杯试题 算法训练 印章 (dp&详解)_m0_58245389的博客-CSDN博客

举报

相关推荐

0 条评论