• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >C语言 > C++实现N个骰子的点数算法

C++实现N个骰子的点数算法

作者: 字体:[增加 减小] 来源:互联网 时间:2017-05-28

通过本文主要向大家介绍了c++浮点数,c++输出浮点数,c++递归算法,c++算法,c++排序算法等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

本文实例讲述了C++实现N个骰子的点数算法,分享给大家供大家参考之用。具体方法如下:

题目要求:把n个骰子仍在地上,所有点数

实现代码如下:

#include <iostream>

using namespace std;

const int g_maxValue = 6;
const int number = 6;

int array[(number - 1) * g_maxValue + 1];

void probility(int original, int current, int sum, int *array)
{
 if (current == 0)
 {
 array[sum - original]++;
 return;
 }

 for (int i = 1; i <= g_maxValue; i++)
 {
 probility(original, current - 1, sum + i, array);
 }
}

void generateValue(int *array, int size)
{
 if (array == NULL || size <= 0)
 return;

 for (int i = number; i <= number * g_maxValue; i++)
 {
 array[i - number] = 0;
 }

 probility(number, number, 0, array);

 for (int i = 0; i < (number - 1) * g_maxValue + 1; i++)
 {
 cout << array[i] << " ";
 }
}

void main()
{
 generateValue(array, (number - 1) * g_maxValue + 1);
}

</div>

采用循环解法,和上述代码本质一样,但是略有不同。

具体实现代码如下:

#include <iostream>

using namespace std;

void PrintProbability(int number)
{
 const int g_maxValue = 6;

 int *array[2];
 for (int i = 0; i < 2; i++)
 {
 array[i] = new int[g_maxValue * number];
 }

 for (int i = 0; i < g_maxValue * number; i++)
 {
 array[0][i] = 0;
 array[1][i] = 0;
 }
 
 int flag = 0;
 for (int i = 0; i < g_maxValue; i++)
 {
 array[flag][i] = 1;
 }

 for (int i = 1; i < number; i++)
 {
 for (int j = 0; j < i; j++)
  array[1 - flag][j] = 0;
 for (int j = i; j < (i + 1) * g_maxValue; j++)
 {
  array[1 - flag][j] = 0;
  for (int k = 1; k <= j && k <= g_maxValue; k++)
  array[1 - flag][j] += array[flag][j - k];
 }

 flag = 1 - flag;
 }

 for (int i = number - 1; i < g_maxValue * number; i++)
 {
 cout << array[flag][i] << " ";
 }
}

void main()
{
 PrintProbability(2);
}

</div>

希望本文所述对大家C++程序算法设计的学习有所帮助。

</div>
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • C++实现N个骰子的点数算法
  • 解析C++ 浮点数的格式化输出
  • 解析C++ 浮点数的格式化显示
  • 深入C/C++浮点数在内存中的存储方式详解
  • 解析C++浮点数无效值的定义与无效值判定的小结
  • 深入C++浮点数无效值定义与判定的解决办法

相关文章

  • 2017-05-28C++实现简单的希尔排序Shell Sort实例
  • 2017-05-28VC++实现文件与应用程序关联的方法(注册表修改)
  • 2017-05-28c语言随机数函数示例
  • 2017-05-28Python HTTP服务搭建显示本地文件
  • 2017-05-28C++通过TerminateProess结束进程实例
  • 2017-05-28对C++默认构造函数的一点重要说明
  • 2017-05-28如何在程序中判断VS的版本(实现方法详解)
  • 2017-05-28C++ Vector用法详解
  • 2017-05-28C语言 strftime 格式化显示日期时间的实现
  • 2017-05-28C++拷贝构造函数(深拷贝与浅拷贝)详解

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • 详解C++编程中运算符的使用
    • 详谈C++何时需要定义赋值/复制构造函数
    • c++ builder TreeView控件节点遍历代码
    • 了解C++编程中指定的异常和未经处理的异常
    • 探讨:用两个栈实现一个队列(我作为面试官的小结)
    • 详解C++中的函数调用和下标以及成员访问运算符的重载
    • C语言控制台版2048小游戏
    • Cocos2d-x UI开发之CCControlPotentiometer控件类使用实例
    • c++中struct使用注意事项
    • 详解C语言中的getgrgid()函数和getgrnam()函数

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有