100题之n个骰子的点数

    技术2022-05-19  21

    n个骰子扔在地上,所有骰子朝上一面的点数之和为S。输入n,打印出S的所有可能的值出现的概率。

    #include<iostream> #include<math.h> using namespace std; int f[2][100]; int N; int sum; int dallor; void compute_f() { sum=N*dallor; for(int i=0;i<100;i++) for(int j=0;j<100;j++) f[i%2][j]=0; for(int i=1;i<=dallor;i++) { f[1][i]=1; } for(int i=2;i<=N;i++) { for(int j=1;j<=sum;j++) { f[i%2][j]=0; for(int k=1;k<=dallor;k++) { if(j>k) { f[i%2][j]+=f[(i-1)%2][j-k]; } } cout<<"f["<<i<<"]["<<j<<"]="<<f[i%2][j]<<endl; } } long total=1; for(int i=1;i<=N;i++) { total*=dallor; } for(int j=N;j<=sum;j++) { cout<<j<<" "<<(double)(f[N%2][j]/double(total))<<endl; } } int main() { N=10; dallor=6; compute_f(); }  


    最新回复(0)