题目描述
本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。
小明参加了少年宫的一项趣味活动:每个小朋友发给一个空白的骰子(它的
6 个面是空白的,没有数字),要小朋友自己设计每个面写哪个数字。但有如下要求:
- 每个面只能填写 0 至 8 中的某一个数字。
- 不同面可以填写同样的数字,但 6 个面总和必须等于 24 。
填好后,小朋友可以用自己填写好数字的骰子向少年宫的两个机器人挑战----玩掷骰子游戏。规则如下:
三方同时掷出自己的骰子,如果出现任何相同的数字,则三方都不计分。
如果三方数字都不同,则最小数字一方扣 1 分,最大数字一方加 1 分。
小明看到了两个机器人手中的骰子分别是:
0 0 0 8 8 8 1 1 4 5 6 7
请你替小明算一下,他如何填写,才能使自己得分的概率最大。
请输出小明应该填写的 6 个数字,按升序排列,数字间用一个空格分开。文章来源:https://www.toymoban.com/news/detail-819341.html
如果认为有多个答案,提交字母序最小的那个方案。文章来源地址https://www.toymoban.com/news/detail-819341.html
运行限制
import java.util.Scanner;
// 1:无需package
// 2: 类名必须Main, 不可修改
public class Main {
static int[] j1=new int[] {0,0,0,8,8,8};
static int[] j2=new int[] {1,1,4,5,6,7};
static int[] a=new int[6];
static int[] b=new int[6];
static int ans=0;
static int max=Integer.MIN_VALUE;
public static void main(String[] args) {
dfs(0,0);
for(int i=0;i<5;i++) {
System.out.printf(b[i]+" ");
}
System.out.print(b[5]);
}
public static void dfs(int n,int sum) {
if(sum>24) {
return;
}
if(n>5) {
int count = 0;
if(sum==24) {
count=game();
}
if(count>max) {
max=count;
for(int i=0;i<6;i++) {
b[i]=a[i];
}
}
return;
}
for(int i=0;i<=8;i++) {
a[n]=i;
dfs(n+1,sum+i);
}
}
public static int game() {
int ans=0;
for(int i=0;i<6;i++) {
for(int j=0;j<6;j++) {
for(int k=0;k<6;k++) {
if(a[k]>j1[i]&&a[k]>j2[j]) {
ans++;
}
if(a[k]<j1[i]&&a[k]<j2[j]) {
ans--;
}
}
}
}
return ans;
}
}
-
- 最大运行时间:1s
- 最大运行内存: 128M
到了这里,关于蓝桥杯官网填空题(骰子迷题)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!