时间限制:1 秒

内存限制:32 兆

特殊判题:否

提交:316

解决:29

题目描述:

把n个骰子扔在地上,所有骰子朝上一面的点数之和为S。输入n,打印出S的所有可能的值出现的概率。

输入:

输入包括一个整数N(1<=N<=1000),代表有N个骰子。

输出:

可能有多组测试数据,对于每组数据,

按照Sample Output的格式输出每一个可能出现的和S的概率。

样例输入:
1
2
样例输出:
1: 0.167
2: 0.167
3: 0.167
4: 0.167
5: 0.167
6: 0.167 2: 0.028
3: 0.056
4: 0.083
5: 0.111
6: 0.139
7: 0.167
8: 0.139
9: 0.111
10: 0.083
11: 0.056
12: 0.028

思路:

标准的动态规划题目,根据上一步状态推出下一步。

另外此题判题数据应该是错误的,比如别人能AC的程序输入4得到的结果是:

4: 0.002

5: 0.005

6: 0.009

7: 0.017

8: 0.028

9: 0.043

10: 0.062

11: 0.080

12: 0.096

13: 0.108

14: 0.113

15: 0.108

16: 0.096

17: 0.080

18: 0.062

19: 0.043

20: 0.027

21: 0.015

22: 0.008

23: 0.003

24: 0.001

4和24对应的概率不一样,这显然是是错误的。

下面分别给出能AC的代码和我的代码。

代码1(能AC的代码):

#include<stdio.h>

#include<string.h>

#include<math.h>

int main()

{

    int n,i,j,k;

    double a[2][6005],all;

    while(scanf("%d",&n)!=EOF)

    {

        memset(a,0,sizeof(a));

        a[1][1]=1;

        a[1][2]=1;

        a[1][3]=1;

        a[1][4]=1;

        a[1][5]=1;

        a[1][6]=1;

        for(i=2;i<=n;i++)

        {

            for(j=i*6;j>=i;j--)

            {

                a[i%2][j]=0;

                if(j-1>0)

                    a[i%2][j]+=a[(i+1)%2][j-1];

                if(j-2>0)

                    a[i%2][j]+=a[(i+1)%2][j-2];

                if(j-3>0)

                    a[i%2][j]+=a[(i+1)%2][j-3];

                if(j-4>0)

                    a[i%2][j]+=a[(i+1)%2][j-4];

                if(j-5>0)

                    a[i%2][j]+=a[(i+1)%2][j-5];

                if(j-6>0)

                    a[i%2][j]+=a[(i+1)%2][j-6];

            }

        }

        all=pow(6.0,n);

        for(i=n;i<=n*6;i++)

            printf("%d: %.3lf\n",i,a[n%2][i]/all);

        printf("\n");

    }

    return 0;

}

代码2(我的代码):

#include <stdio.h>

#define N 1000

int main(void)
{
int n, i, j, k;
double a[2][N*6]; while (scanf("%d", &n) != EOF)
{
a[0][0] = 1;
for(i=1; i<=n; i++)
{
for (j=i; j<=i*6; j++)
{
a[i&1][j] = 0;
for (k=j-1; k>=j-6; k--)
{
if (k>=i-1 && k<=(i-1)*6)
a[i&1][j] += a[(i-1)&1][k]/6;
}
if (i == n)
printf("%d: %.3lf\n", j, a[i&1][j]);
}
}
printf("\n");
} return 0;
}
/**************************************************************
Problem: 1255
User: liangrx06
Language: C
Result: Wrong Answer
****************************************************************/

九度OJ 1255:骰子点数概率 (递归、DP)的更多相关文章

  1. 九度OJ 1338:角斗士 (递归、DP)

    时间限制:3 秒 内存限制:32 兆 特殊判题:否 提交:213 解决:66 题目描述: 角斗士是古罗马奴隶社会的一种特殊身份的奴隶,他们的职责是在角斗场上进行殊死搏斗,为了人们提供野蛮的娱乐.他们的 ...

  2. 九度OJ 1073:杨辉三角形 (递归)

    时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:3780 解决:1631 题目描述: 输入n值,使用递归函数,求杨辉三角形中各个位置上的值. 输入: 一个大于等于2的整型数n 输出: 题目可 ...

  3. 九度OJ 1092:Fibonacci (递归)

    时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:1923 解决:1378 题目描述: The Fibonacci Numbers{0,1,1,2,3,5,8,13,21,34,55...} ...

  4. 九度OJ 1112:拦截导弹 (DP、最长下降子序列)

    时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:3124 解决:1525 题目描述: 某国为了防御敌国的导弹袭击,开发出一种导弹拦截系统.但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能 ...

  5. 九度OJ 1131:合唱队形 (DP、最长上升下降序列)

    时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:2865 解决:881 题目描述: N位同学站成一排,音乐老师要请其中的(N-K)位同学出列,使得剩下的K位同学不交换位置就能排成合唱队形. ...

  6. 九度OJ 1086:最小花费 (DP)

    时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:3960 解决:819 题目描述: 在某条线路上有N个火车站,有三种距离的路程,L1,L2,L3,对应的价格为C1,C2,C3.其对应关系如下 ...

  7. 九度OJ 1101:计算表达式 (DP)

    时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:4340 解决:1335 题目描述: 对于一个不存在括号的表达式进行计算 输入: 存在多种数据,每组数据一行,表达式不存在空格 输出: 输出结 ...

  8. 【九度OJ】题目1078:二叉树遍历 解题报告

    [九度OJ]题目1078:二叉树遍历 解题报告 标签(空格分隔): 九度OJ http://ac.jobdu.com/problem.php?pid=1078 题目描述: 二叉树的前序.中序.后序遍历 ...

  9. 【九度OJ】题目1467:二叉排序树 解题报告

    [九度OJ]题目1467:二叉排序树 解题报告 标签(空格分隔): 九度OJ http://ac.jobdu.com/problem.php?pid=1467 题目描述: 二叉排序树,也称为二叉查找树 ...

随机推荐

  1. JS编码三种方法的区别:escape、encodeURI和encodeURIComponent

    1.escape和它们不是同一类 简单来说,escape是对字符串(string)进行编码(而另外两种是对URL),作用是让它们在所有电脑上可读.编码之后的效果是%XX或者%uXXXX这种形式.其中  ...

  2. 2017年开发者生态报告:Python最多人想尝试的编程语言(转载)

    在过去的十年里,Python 语言获得了最大的增长幅度,已经成为最受欢迎的程序设计语言之一.JetBrains 近日发布了 2017 开发者生态报告,该报告包含开发人员对 11 种编程语言以及数据库和 ...

  3. Java 7 新功能: 省略finally, 保证资源正常关闭

    class MyResource implements Closeable{ @Override public void close() throw IOException{ } } try( myR ...

  4. spring自动装配(No qualifying bean )

    No qualifying bean of type [com.wfj.service.cms.main.ChannelMng] found for dependency: expected at l ...

  5. Python图像处理(11):k均值

    快乐虾 http://blog.csdn.net/lights_joy/ 欢迎转载,但请保留作者信息 K均值是一个经典的聚类算法,我们试试在python下使用它. 首先以(-1.5, -1.5)和(1 ...

  6. 【读书笔记】【深入理解ES6】#1-块级作用域绑定

    var声明及变量提升(Hoisting)机制 在函数作用域或全局作用域中通过var关键字声明的变量,无论实际上是在哪里声明的,都会被当成在当前作用域顶部声明的变量.这就是我们常说的提升(Hoistin ...

  7. android 4.0 禁用系统home键

    2.2 禁用系统home键.这里不说了. 近期项目有一个需求,禁用系统的全部键.像menu, home, back.同一时候还要是想点击响应与view的弹出. 就是UI这部分要正常. back键我们自 ...

  8. 【HTML5】元素<script>与<noscript>的使用

    功能描述 在新建的页面中增加一个文本框"txtContent"和一个按钮"请点击我":当单击按钮时.通过页面中加入的JavaScript脚本获取为文本框中的内容 ...

  9. Volatile 多线程中用到的关键字

    前言 不管是在面试还是实际开发中 volatile 都是一个应该掌握的技能. 首先来看看为什么会出现这个关键字. 内存可见性 由于 Java 内存模型(JMM)规定,所有的变量都存放在主内存中,而每个 ...

  10. 关于解决 http 状态码200,php 文件有输出,但是不显示模板文件的问题

    一 问题 给公司搭建一个在线测试站点之后,在浏览器地址栏输入 "http://xxx.xxx.xxx/index.php",页面什么都没显示.调出浏览器的开发者工具查看,http ...