`
kmplayer
  • 浏览: 508808 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

n个筛子的和出项的次数

阅读更多
1,
题目:把n个骰子扔在地上,所有骰子朝上一面的点数之和为S。
输入n,打印出S的所有可能的值出现的次数.

2,分析:
要求出n个骰子的点数和,我们可以先把n个骰子分为两堆:第一堆只有一个,另一个有n-1个。单独的那一个有可能出现从1到6的点数。我们需要计算从1到6的每一种点数和剩下的n-1个骰子来计算点数和。接下来把剩下的n-1个骰子还是分成两堆,第一堆只有一个,第二堆有n-2个。我们把上一轮那个单独骰子的点数和这一轮单独骰子的点数相加,再和剩下的n-2个骰子来计算点数和。分析到这里,我们不难发现,这是一种递归的思路。递归结束的条件就是最后只剩下一个骰子了。
即:f(n, num) = f(n-1, num-1)+f(n-1, num-2)+f(n-1, num-3)+f(n-1, num-4)+f(n-1, num-5)+f(n-1, num-6)
3,实现代码:
#include <iostream>
using namespace std;

const int N = 10;
int dp[N+1][6*N+1]; //临时表

int main()
{

    for (int i = 1; i < N; i++)
    {
        for (int j = i; j <= 6*i; j++)
        {
            if (i == 1)
                dp[i][j] = 1;
            else
            {
                for (int k = 1; k <=6 ; k++)
                    dp[i][j] += dp[i-1][j-k];
            }
        }
    }

    for (int i = 1; i < N; i++)
    {
        for (int j = i; j <= 6*i; j++)
            cout << j << "->" << dp[i][j] << " ";
        cout << endl;
    }
    return 0;
}
分享到:
评论

相关推荐

    T43-n个筛子点数.rar_剑指offer_筛子

    标题中的"T43-n个筛子点数.rar_剑指offer_筛子"指的是一个编程问题,来源于《剑指Offer》这本书,它涉及到计算多个筛子(骰子)投掷后点数之和的问题。这个问题通常出现在算法和数据结构的学习中,旨在训练面试者...

    使用递归实现计算多个筛子出现的点数的概率分布

    在C#中,我们可以定义一个递归函数来计算n个筛子的点数组合。这个函数可以接受两个参数:一个是筛子的数量,另一个是一个数组或集合来存储当前已投掷的点数。初始调用时,点数数组为空,然后函数会递归地添加下一个...

    暴风雨是一个筛子

    标题中的“暴风雨是一个筛子”是一句富有哲理的比喻,用来描绘生活中艰难困苦的环境如何筛选出坚韧不拔的人。这个标题暗示在困难面前,人们的意志、决心和行动力将受到检验,只有那些勇敢面对并克服挑战的人才能在...

    c++实现筛选筛子的一个小游戏

    假设游戏规则是玩家掷两个筛子,如果结果之和为7或11,玩家赢;如果结果为2、3或12,玩家输;否则,玩家需要根据新的点数继续掷骰子,直到再次掷出7或之前的点数。这涉及到条件判断语句,如`if`和`else`,以及循环...

    筛子游戏程序及代码

    Java的`java.util.Random`类可以生成0到最大值之间的随机整数,通过设置不同的种子值和范围,可以模拟掷出不同数量和面值的筛子。例如,掷两个六面筛子,程序员可能会创建一个Random实例,然后调用其nextInt(6)方法...

    android筛子游戏源码

    本源码提供了一个简单的筛子游戏示例,它涉及到多个Android编程的关键概念和技术,包括用户界面设计、事件处理、随机数生成以及动画效果。接下来我们将深入探讨这些关键知识点。 1. **Android布局设计**: - XML...

    0782、电子筛子.zip

    【描述】虽然描述信息简洁,但我们可以推测这个压缩包可能是为了帮助用户理解和创建自己的电子筛子项目。这可能涉及到编程语言(如Python、JavaScript、C++等)、随机数生成算法、用户界面设计以及可能的硬件接口...

    2018最火的极速筛子

    这款"极速筛子"游戏很可能利用了H5的离线存储、多媒体支持和实时通信等功能,为用户提供流畅的游戏体验。 【描述】中提到的"价值3000多"可能是指该H5游戏的开发成本或者其在市场上的价值,这表明它具有较高的专业性...

    筛子游戏(C++控制台程序源码)

    通过这个筛子游戏项目,初学者可以深入理解C++的基本语法和编程实践,同时体验到从设计到实现一个完整程序的全过程。而有经验的开发者则可以通过此项目复习基础,或者改进代码以提高效率、可读性和可维护性。

    电子筛子设计电路仿真

    通过这个电子筛子的设计,我们可以深入理解数字电路的工作原理,增强实际电路设计和故障排查能力,同时也能体验到电子技术带来的乐趣。在实际操作中,我们还可以尝试优化电路,例如增加声音效果、改变显示方式等,以...

    swift 3D 筛子

    "Swift 3D 筛子"项目就是这样一个实例,它涉及到利用3D动画技术创建一个可旋转的骰子模型。在这个项目中,我们将深入探讨如何利用苹果的SceneKit框架来实现3D图形渲染、交互以及动态效果。 首先,SceneKit是Apple为...

    android摇筛子源代码

    本文将详细解析一个基于Android的摇筛子源代码,帮助初学者了解如何在Android环境中实现此类应用。这个项目适用于已经安装了JDK 7.0和SDK 17的开发者环境。 首先,我们需要理解Android应用的基本架构。Android应用...

    Unity3D掷筛子游戏源码

    "Unity3D掷筛子游戏源码"是一个简单的项目,适合初学者理解Unity的基本操作和编程逻辑,同时也可作为更复杂游戏开发的基础。 在Unity3D中创建一个掷筛子游戏,主要涉及以下几个关键知识点: 1. **基本场景设置**:...

    个性C#控制台筛子游戏

    总的来说,《个性C#控制台筛子游戏》是一款展示C#基础编程技能和控制台交互设计的实例,对于初学者而言,这是一个很好的实践项目,能够提升对C#语言的理解和编程能力。通过分析和理解这个游戏的源代码,开发者可以...

    Android应用源码之模仿筛子源码-IT计算机-毕业设计.zip

    本项目"Android应用源码之模仿筛子源码"就是一个典型的移动开发App案例,适用于初学者和有经验的开发者进行学习和研究。以下是关于这个项目的一些关键知识点和相关技术的详细解析: 1. **Android Studio**:作为...

    麻将资源牌面筛子

    总的来说,“麻将资源牌面筛子”这个资源包涵盖了麻将游戏开发中的关键元素,包括牌面设计、随机数模拟、音乐效果和界面布局。这些要素的组合和优化将直接影响到麻将游戏的用户体验和可玩性。对于开发者而言,理解和...

    电子筛子.zip

    一个基本的电子筛子应用至少需要一个按钮来触发掷骰子的动作和一个结果显示区域。用户界面(UI)设计应当直观易用,按钮的样式和位置应符合人机交互原则,确保用户能够轻松理解如何操作。在移动设备上,可能还会包含...

    Android模仿筛子app_安卓源码.zip

    在这个筛子应用中,可能会有一个主Activity,负责展示筛子的界面和处理用户交互。开发者可能使用了XML布局文件来定义UI元素,如按钮、图像和文本视图,这些元素将用于显示筛子的数字和执行掷筛子的动作。 其次,...

    部门掷筛子活动Demo

    这个程序可能设计了多个骰子(描述中提到的是6个)进行投掷,并根据投出的点数进行排名和比较。 首先,我们要知道掷筛子的基本概念。在传统的游戏中,一个六面骰子的每个面上分别有1到6个点,每次投掷会得到1到6...

    0782、电子筛子.rar

    全国大学生电子设计竞赛是一项旨在培养大学生创新思维和实践能力的重要赛事。这个名为“0782、电子筛子.rar”的压缩包文件包含了参赛者可能会感兴趣的资源,包括学习资料、历年试题、解决方案以及源代码,是准备电赛...

Global site tag (gtag.js) - Google Analytics