骰子求和

人生奥义时刻当然是程序通过100%的时刻啦,哈哈

333

class Solution {
public:
    /**
     * @param n an integer
     * @return a list of pair<sum, probability>
     */
    
    vector<pair<int, double>> dicesSum(int n) {
        // Write your code 
       
        double **matrix=new double *[n+1];
        for(int i=0;i<=n;i++)
        {
            matrix[i]=new double[6*n+1];
        }
        for(int i=0;i<=n;i++)\\初始化0矩阵
        {
            for(int j=0;j<=6*n;j++)
            {
                matrix[i][j]=0;
            }
        }
        for(int i=1;i<=6;i++)//初始化骰子为1的情况
        {
            matrix[1][i]=1.0/6;
        }
        if(n>=2)//骰子数大于2的情况,依次有上一排概率推出
        {
        for(int i=2;i<=n;i++)
        {
            for(int j=i;j<=6*i;j++)
            {
                for(int k=1;k<=6;k++)
                {
                    if((j-k>=i-1))
                    {matrix[i][j]+=matrix[i-1][j-k]*1.0/6;}
                    else
                     break;
                }
            }
        }
        }
        vector<pair<int,double>> result;
        for(int i=n;i<=6*n;i++)
        {
            pair<int,double> a;
            a=make_pair(i,matrix[n][i]);
            result.push_back(a);
            
        }
        return result;
    }
};

猜你喜欢

转载自blog.csdn.net/fuck_you_sb/article/details/82630532