题目描述:

六一儿童节到了,YZ买了很多丰厚的礼品,准备奖励给JOBDU里辛劳的员工。为了增添一点趣味性,他还准备了一些不同类型的骰子,打算以掷骰子猜数字的方式发放奖品。例如,有的骰子有6个点数(点数分别为1~6),有的骰子有7个(点数分别为1~7),还有一些是8个点数(点数分别为1~8) 。他每次从中拿出n个同一类型的骰子(假设它们都是拥有m个点数并且出现概率相同)投掷,然后让员工在纸上按优先级(从高到低)的顺序写下3个数上交,表示他们认为这些骰子最有可能的点数之和是多少。第一个数就猜对的人,是一等奖;第二个数才猜对的人是二等奖;如果三个数都不是正确答案,别灰心!YZ还准备了很多棒棒糖。ZL很聪明,他想了想,打算把概率(以保留两位小数的概率计)最高的三个数找出来,如果有概率相同,则选择其中点数和最小的那个数。你觉得ZL会依次写下哪三个数?

输入:

输入有多组数据。

每组数据一行,包含2个整数n(0<=n<=10),m(6<=m<=8),n表示YZ拿出的骰子数,m表示骰子拥有的点数。如果n=0,则结束输入。

输出:

对应每组数据,输出ZL最可能依次写下的点数,以及其对应的概率值。概率值按4舍5入要求保留2位小数。每组数据之间空一行,注意:最后一组数据末尾无空行。

样例输入:
1 6
4 6
3 7
0
样例输出:
1 0.17
2 0.17
3 0.1713 0.11
14 0.11
15 0.1112 0.11
10 0.10
11 0.10

DP的背包问题。
 1 #include <iostream>
 2 #include <cstring>
 3 #include <cstdio>
 4 #include <vector>
 5 #include <algorithm>
 6 using namespace std;
 7
 8 struct Node
 9 {
10     double p;
11     int val;
12     Node(){}
13     Node(int v, double _p):val(v), p(_p){}
14 };
15
16 bool comp(const Node &lhs, const Node &rhs)
17 {
18     if (lhs.p > rhs.p)
19         return true;
20     else if (lhs.p < rhs.p)
21         return false;
22     else
23         return lhs.val < rhs.val;
24 }
25
26 int main()
27 {
28     int n, m;
29     int f[10][81];
30     while(cin >> n)
31     {
32         if (n == 0)
33             break;
34         cin >> m;
35         memset(f, 0, sizeof(f));
36
37         for(int i = 1; i <= m; i++)
38             f[0][i] = 1;
39
40         int v = m * n;
41         for(int i = 1; i < n; i++)
42             for(int j = 1; j <= m; j++)
43                 for(int k = 1; k <= v - j; k++)
44                     f[i][k+j] += f[i-1][k];
45
46         vector<Node> num;
47         int sum = 0;
48         for(int i = 1; i <= v; i++)
49             sum += f[n-1][i];
50
51         for(int i = 1; i <= v; i++)
52         {
53             double p = f[n-1][i] / (double)sum;
54             p += 0.005;
55             int a = (int)(p * 100);
56             p = (double)a / 100;
57             num.push_back(Node(i, p));
58         }
59
60         sort(num.begin(), num.end(), comp);
61
62         for(int i = 0; i < 3; i++)
63             printf("%d %.2lf\n", num[i].val, num[i].p);
64         printf("\n");
65     }
66 }

转载于:https://www.cnblogs.com/chkkch/archive/2012/11/23/2784950.html

[九度][何海涛] 乐透之猜数游戏相关推荐

  1. python猜数游戏续_python猜数游戏续改编

    answer=456 n=input('Enteranumber:') correct=len([iforiinnifiinstr(answer)]) exact=len([afora,binzip( ...

  2. 猜数游戏(GAMBLER)

    解题: 1.电脑要拿到一个用户不知道的数字 2.用户猜数,电脑告知数字大了,小了并在用户猜对后结束循环告知猜的次数(switch语句针对不同次数做出不同态度) 算法部分: 首先给电脑赋一个随机且有范围 ...

  3. 猜数游戏c语言程序流程图,C语言程序设计之猜数游戏.ppt

    C语言程序设计之猜数游戏 编程人员演示 C语言程序设计之猜数游戏 --软工一班 第二小组 程序功能简介 程序思路导引 程序流程图 程序N-S图 组员名单及其具体分工 end page 程序功能简介(1 ...

  4. python猜数游戏在程序中预设一个_一道Python简单程序结构练习题

    1.猜数游戏. 在程序中预设一个0~9之间的整数,让用户通过键盘输入所猜数字,如果大于预设的数, 显示"遗憾,太大了":如果小于预设的数,显示"遗憾,太小了": ...

  5. python猜数游戏流程_python简单猜数游戏实例

    本文实例讲述了python简单猜数游戏.分享给大家供大家参考.具体实现方法如下: #!/usr/bin/env python import random number = random.randint ...

  6. php猜数游戏63,PHP实现猜数游戏的代码实例分享

    猜数游戏有两种玩法: 第一种:两个人玩,一方出数字,一方猜.出数字的人要想好一个指定位数的数,数字可重复,不能让猜的人知道. 猜的人就可以开始猜.每猜一个数,出数者就要说大过或小过出的数. 第二种:两 ...

  7. 计算机猜数游戏matlab,MATLAB课程设计报告猜数游戏设计

    课程设计的目的及意义 目的:通过本次课程设计,可以使我进一步认识MATLAB理论方法和实际意义,对理论知识进行必要实践.培养我们设计和仿真的基本能力,以便最终和生产实践以及其他科学结合. 意义: 1. ...

  8. 十四、Java练习:一个猜数游戏

    @Author:Runsen @Date:2020/5/23 本专栏是付费学Java专栏,今天我做一个猜数游戏.将前面,我写的全部复习下. 其实,这个猜数游戏,也是我学Java中的学过的. 文章目录 ...

  9. 猜数游戏,随机目标数字,直到猜中退出

    /* 猜数游戏(其三:目标数字是0~999的随机数)*/#include <time.h> #include <stdio.h> #include <stdlib.h&g ...

最新文章

  1. 技术图文:如何解决 DAO 抛出的 80040154 错误?
  2. 针对2013年B题碎纸片拼接问题(附件一、附件二)
  3. ImportError: Failed to import `pydot`. Please install `pydot`. For example with `pip install pydot`
  4. 国人如此浮躁为哪般? --- 我看2018年度AI圈八大造假事件华人独占6件
  5. Linux内核将支持HyperBus
  6. SiamNet: 全卷积孪生网络用于视频跟踪
  7. Javaweb开发环境与搭建
  8. 实验:PIO外部中断
  9. 天梯赛模拟 链表去重 (25 分)
  10. android onitemclicklistener 参数,android – OnItemClickListener从模型中获取数据
  11. win10下安装和卸载Ubuntu双系统
  12. 【原创】(十二)Linux内存管理之vmap与vmalloc
  13. 第六章 实验报告(函数与宏定义)
  14. Spring, MyBatis 多数据源的配置和管理
  15. 语言 泰克示波器程序_示波器再升级,EMI测试不求人
  16. shell的EOF用法
  17. PostgreSQL使用pgAdmin3不能编辑表里的数据
  18. android消息提示框大小,android Toast設置彈框大小
  19. Python获取逐浪小说内容
  20. 数据库-SQL Server数据库查询速度慢(连接超时)原因及优化方法

热门文章

  1. signature=c4f11bb5142d9f6ce0876b3cc0d888af,PROVISIONAL SIGNATURE SCHEMES
  2. linux 安装 tao环境,linux环境安装hbase------不一定需要hadoop
  3. 使用计算机的缺点英文作文,网络与计算机的好处与坏处英文作文
  4. python 模拟用户点击浏览器_Python-模拟浏览器-下载文献
  5. canvas 闭合_想使用SVG或者canvas 手绘闭合多边形,使用vml效果已经实现了,由于vml只能支持ie所以想转成SVG或canvas...
  6. linux设置数据库定时备份,linux中使用计划任务进行数据库定期备份
  7. 新网 云服务器,新网云服务器的优势包括什么?
  8. windows 命令行cmd安装python matplotlib模块后pycharm显示“ModuleNotFoundError: No module named ‘matplotlib‘解决方法
  9. C#获取当前进程、项目路径的方法
  10. 编程指南_今晚7点,译者编程入门指南抽奖!