java - 我尝试滚动两个骰子的结果 - 有错误吗?
问题描述
我试图解决的问题是返回两个骰子总和的最可能结果。输入是分隔的每个裸片空间上的边数。输出是最可能的结果列表,按升序排列。因此,对于输入“6 6”,我们应该期待 7。这是通过绘制一个包含第 6 行和第 6 列的表格并计算总和 7 比任何其他总和出现得更多来找到的。下面的代码适用于所有显示的测试用例,但未通过评分器(边缘用例,更大的输入)。你能想到问题可能是什么吗?
根据该网站,“如果您的程序在秘密测试用例中被拒绝,那么您的程序中很可能存在严重错误”。
package xyz;
import java.io.*;
import java.util.*;
public class dicecup {
public static void main(String[] args) throws IOException {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
String s = reader.readLine();
String[] parts = s.split(" ");
int n = Integer.parseInt(parts[0]); // sides on die one
int m = Integer.parseInt(parts[1]); // sides on die two
int min = n;
if (m < n) {
min = m;
}
ArrayList<Integer> sums = new ArrayList<Integer>();
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= m; j++) {
sums.add(i + j);
}
}
ArrayList<String> strings = new ArrayList<String>();
for (int i = 0; i < sums.size(); i++) {
strings.add(sums.get(i).toString());
}
int max = min;
ArrayList<String> outputs = new ArrayList<String>();
for (int i = 0; i < strings.size(); i++) {
if (Collections.frequency(strings, strings.get(i)) == max) {
outputs.add(strings.get(i));
}
}
HashSet<String> uniqueValues = new HashSet<>(outputs);
for (String str : uniqueValues) {
System.out.println(str);
}
}
}
解决方案
推荐阅读
- html - 无法在 Bootstrap 3x 上隐藏子菜单
- android - 如何在 Picasso 中加载图像之前显示进度条。然后如果加载了图像,则在 android 中启动故事进度视图
- java - Wildfly 中可用图层的完整列表
- c# - 在 C# 中的本地方法之后进行垃圾收集
- testing - Travis 是否支持 Allure 报告?
- django - Django 自定义字段中的异常没有调试信息
- css - 并非所有浏览器都支持自定义字体
- python - 无法使用 pip 18.1 python 3.7.2 在 Windows 10 中安装 pytest
- iis - 基于 HTTPS 的 IIS URL 重写
- xstate - 在 xState 中将事件从一台机器发送到另一台机器时传递值