• [剑指Offer]60-n个骰子的点数


    题意

    输入骰子个数n,打印出所有骰子朝上的点的点数之和,及对应的概率。

    题解

    循环。
    n个骰子,点数之和在n~6n范围内。计算n个骰子扔出和为m的情况数,等于n-1个骰子扔出m-1,m-2...m-6的情况数之和。
    最终=m/6^n。

    代码

    #include <iostream>
    #include <math.h>
    #define MAX_N 10000
    using namespace std;
    
    
    class Solution{
    public:
        void printProbability(int n){
            if(n<=0){
                return;
            }
            
            cptTimes(n);
            for(int i=n;i<=6*n;++i){
                cout<<"总点数:"<<i<<endl;
                cout<<"概率"<<cntNew[i]/pow(6,n)<<endl;
            }
        }
    private:
        long long cnt[6*MAX_N];
        long long cntNew[6*MAX_N];
        void cptTimes(int n){
           for(int k=1;k<=n;++k){
               if(k==1){
                   for(int i=1;i<=6;++i){
                       cnt[i]=1;
                   }
               }
               else{
                   memset(cntNew,0,sizeof(cntNew));
                   for(int i=k;i<=6*k;++i){
                       for(int j=1;j<=6&&i-j>=1;++j){
                           cntNew[i]+=cnt[i-j];
                       }
                   }
                   for(int i=k;i<=6*k;++i){
                       cnt[i]=cntNew[i];
                   }
                   
               }
           }
        }
    };
    
    
    int main(int argc, const char * argv[]) {
        int n;
        cin>>n;
        Solution s=Solution();
        s.printProbability(n);
        return 0;
    }
    
  • 相关阅读:
    函数式编程
    scala 有 + 运算符吗?
    使用 Idea 打 scala程序的 jar 包
    相见恨晚的 scala
    半夜思考,为什么 String 具有不变性
    我的常用
    DataTable学习笔记
    Js 操作cookie
    嵌套的 ajax 请求
    Jquery插件收集【m了慢慢学】
  • 原文地址:https://www.cnblogs.com/coding-gaga/p/10621712.html
Copyright © 2020-2023  润新知