蓝桥杯——骰子迷题(瞎暴力)

 

    小明参加了少年宫的一项趣味活动:
    每个小朋友发给一个空白的骰子(它的6个面是空白的,没有数字),要小朋友自己设计每个面写哪个数字。但有如下要求:

    1. 每个面只能填写 0 至 8 中的某一个数字。

    2. 不同面可以填写同样的数字,但6个面总和必须等于24。

    填好后,小朋友可以用自己填写好数字的骰子向少年宫的两个机器人挑战----玩掷骰子游戏。规则如下:

    三方同时掷出自己的骰子,如果出现任何相同的数字,则三方都不计分。
  
    如果三方数字都不同,则最小数字一方扣 1 分,最大数字一方加 1 分。
   
    小明看到了两个机器人手中的骰子分别是:

    0 0 0 8 8 8
  
    1 1 4 5 6 7

    请你替小明算一下,他如何填写,才能使自己得分的概率最大。

    请提交小明应该填写的6个数字,按升序排列,数字间用一个空格分开。

    如果认为有多个答案,提交字母序最小的那个方案。

    请严格按照格式,通过浏览器提交答案。

答案:2 2 2 2 8 8 

这道题我也不知道这种做法对不对,反正结果是出来了

因为小明只需要6中选择,所以完全可以套6层循环跑一跑所有的情况

然后就是怎么判断了,首先这6个数的和得是24,其次就是得分的概率最大,因为我们已经知道了另外两个机器人手里的点数了,所以我们可以挨个判断,当小明手里的点数对应得分的概率

第一个机器人  手里只有两种点数

0       概率 1/2;

8       概率 1/2;

第二个机器人手里有5种点数

1       概率  1/3;

4       概率  1/6;

5       概率  1/6;

6       概率  1/6;

7       概率  1/6;

然后就是看小明手里的点数了

0      得分的概率  0       丢分的概率  1/2

1      得分的概率   0       丢分的概率  1/3

2       得分的概率   1/6    丢分的概率   1/3

3       得分的概率   1/6    丢分的概率   1/3

4       得分的概率   1/6   丢分的概率   1/4

5       得分的概率   1/4   丢分的概率    1/6

6       得分的概率   1/3   丢分的概率    1/12

7       得分的概率   5/12  丢分的概率    0

8       得分的概率   1/2   丢分的概率     0

然后我们把所有概率乘以12,得分是正数,丢分是负数,相加,可以得到一个小明手里点数对应得分的权值数组

如下:

int pre[10]={-6,-4,-2,-2,-1,1,3,5,6};

然后就可以暴力枚举了,找到得分权值最大的选择:

#include<iostream>
#include<cstring> 
using namespace std;
int pre[10]={-6,-4,-2,-2,-1,1,3,5,6};
int Max=-9999;
string s;
int main(){
	for(int a=0;a<=8;a++){
		for(int b=0;b<=8;b++){
			for(int c=0;c<=8;c++){
				for(int d=0;d<=8;d++){
					for(int e=0;e<=8;e++){
						for(int f=0;f<=8;f++){
							if(a+b+c+d+e+f==24){
								int temp=pre[a]+pre[b]+pre[c]+pre[d]+pre[e]+pre[f];
								if(temp>Max){
									Max=temp;
                                    cout<<Max<<endl;
                                    cout<<a<<" "<<b<<" "<<c<<" "<<d<<" "<<e<<" "<<f<<endl;
								}
							}
						}
					}
				}
			}
		}
	}
	cout<<"_______________"<<endl;
	cout<<Max<<endl;
	return 0;
}

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值