• 编程算法


    n个骰子的点数(递归) 代码(C)


    本文地址: http://blog.csdn.net/caroline_wendy


    题目: 把n个骰子仍在地上, 全部骰子朝上一面的点数之和为s. 输入n, 打印出s的全部可能的值出现的概率.


    採用递归的方法, 能够如果仅仅有一个骰子, 然后骰子数递增相加.


    代码:

    /*
     * main.cpp
     *
     *  Created on: 2014.7.12
     *      Author: spike
     */
    
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #include <math.h>
    
    
    using namespace std;
    
    
    const int g_maxValue = 6;
    
    
    void Probability (int original, int current, int sum, int* pProbabilities) {
    	if (current == 1) {
    		pProbabilities[sum-original]++;
    	} else {
    		for(int i=1; i<=g_maxValue; ++i) {
    			Probability(original, current-1, i+sum, pProbabilities);
    		}
    	}
    }
    
    
    void Probability (int number, int* pProbabilities) {
    	for	(int i=1; i<=g_maxValue; ++i)
    		Probability(number, number, i, pProbabilities);
    }
    
    
    void PrintProbability (int number) {
    	if (number < 1)
    		return;
    	int maxSum = number*g_maxValue;
    	int* pProbabilities = new int[maxSum-number+1];
    	for (int i=number; i<=maxSum; ++i)
    		pProbabilities[i-number] = 0;
    	Probability(number, pProbabilities);
    	int total = pow((double)g_maxValue, number);
    	for (int i=number; i<= maxSum; ++i) {
    		double ratio = (double)pProbabilities[i-number] / total;
    		printf("%d: %e
    ", i, ratio);
    	}
    	delete[] pProbabilities;
    }
    
    
    int main(void)
    {
        PrintProbability(2);
        return 0;
    }
    
    
    
    

    输出:

    2: 2.777778e-002
    3: 5.555556e-002
    4: 8.333333e-002
    5: 1.111111e-001
    6: 1.388889e-001
    7: 1.666667e-001
    8: 1.388889e-001
    9: 1.111111e-001
    10: 8.333333e-002
    11: 5.555556e-002
    12: 2.777778e-002
    








  • 相关阅读:
    Java 将Clob字段转换成String字符串
    Java BigDecimal详解
    java循环创建对象应该在循环体内还是循环体外
    Java 通过身份证获取生日和性别
    Java将数据进行分组处理
    Java 2进制和16进制的转换
    Map-HashMap 与 IF 判断内存占用对比
    Groovy脚本-通用SQL开关
    Oracle用户、授权、角色管理
    【docker随笔系列】安装sqlserver
  • 原文地址:https://www.cnblogs.com/cxchanpin/p/7141136.html
Copyright © 2020-2023  润新知