- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在尝试解决 JanuszInTheCasino problem其中一个测试用例 (test_one) 失败。我无法弄清楚问题所在。有什么想法吗?
代码如下:
import java.util.Map;
import static com.google.common.collect.Maps.newHashMap;
/**
* Created by Orestis on 09/07/2015
* topcoder problem statement: http://community.topcoder.com/stat?c=problem_statement&pm=13349
*/
public class JanuszInTheCasino {
private final Map<Long, Double> results = newHashMap();
/**
* @param n number of players
* @param m fields
* @param k rounds
* @return double probabilities
*/
public double findProbability(long n, int m, int k) {
double result;
if (results.containsKey(k + n)) {
return results.get(k + n);
} else {
if (k == 0) {
if (n >= 1) {
result = 1.0;
} else {
result = 0.0;
}
} else {
double p = ((double) n % m) / m;
result = (p * findProbability((n - (n / m + 1)), m, k - 1)) +
((1 - p) * findProbability((n - (n / m)), m, k - 1));
}
}
results.put(k + n, result);
return result;
}
}
和测试:
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
import static org.testng.Assert.assertTrue;
/**
* Created by Orestis on 09/07/2015
*/
public class JanuszInTheCasinoTest {
private JanuszInTheCasino j;
@BeforeMethod
public void setup() {
j = new JanuszInTheCasino();
}
@Test
public void test_zero() {
double expected = 1.0;
double actual = j.findProbability(1000000000000L, 3, 50);
System.out.println(actual);
assertTrue(Math.abs(actual - expected) <= 0.001);
}
@Test
public void test_one() {
double expected = 0.012293671817445784;
double actual = j.findProbability(432545123543L, 2, 45);
System.out.println(actual);
assertTrue(Math.abs(actual - expected) <= 0.001);
}
@Test
public void test_two() {
double expected = 1.0;
double actual = j.findProbability(4, 3, 2);
System.out.println(actual);
assertTrue(Math.abs(actual - expected) <= 0.001);
}
@Test
public void test_three() {
double expected = 0.75;
double actual = j.findProbability(3, 2, 2);
assertTrue(Math.abs(actual - expected) <= 0.001);
}
@Test
public void test_four() {
double expected = 0.9999999999999996;
double actual = j.findProbability(786342534673L, 7, 48);
assertTrue(Math.abs(actual - expected) <= 0.001);
}
@Test
public void test_five() {
double expected = 0.9999999999999987;
double actual = j.findProbability(1000000000000L, 39, 40);
assertTrue(Math.abs(actual - expected) <= 0.001);
}
}
最佳答案
问题是由我在结果 map 上使用的 key 引起的(有点弱)。所以,而不是 private final Map<Long, Double> results = newHashMap();
我创建了一个 private final Map<Set<Long>, Double> results = newHashMap()
然后在 findProbability
里面我做的方法:
Set<Long> vals = newHashSet(n, (long)k << 1);
if (results.containsKey(vals)) {
return results.get(vals);
} else { // rest of the code }
关于java - TopCoder SRM 645 - 一个测试用例中的错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31442596/
如果您熟悉 TopCoder,您就会知道您的源代码会获得最终的“成绩/分数”,这取决于时间、编译次数等,其中权重最高的一项是性能。但是他们如何测试,是否有某种简单的代码(java 或 c++)可以做到
我不知道如何使用顶级编码器的离线可视化工具。这是我第一次尝试进行 topcoder 挑战。割草机挑战: https://community.topcoder.com/longcontest/?modu
这段代码在 Topcoder 上给出了一个编译错误。在 code::blocks 上,它编译时有 0 个错误和 0 个警告,打印了 vector ,但它以非零值退出,这导致窗口显示“Interesti
我一直在努力解决the following TopCoder problem : You are playing a strategy game and you wish to train the s
我正在尝试理解问题 DivFreed2在 TopCoder 上: 它具体规定了数组 数组的长度为n。 每个元素都是 1 到 k 之间的整数,包括 1 和 k。 只要 A 和 B 是数组的两个连续元素(
这是一道来自 Topcoder SRM 566 Div2 的算法题。 问题可以查看here . 对于那些没有 topcoder 帐户的人,问题描述如下: Penguin Pals 是一项配对服务,使用
我正在尝试解决这个顶级编码器问题。看了解法分析还是看不懂。 解决方案的基本思路是逆向思考,插入元素而不是删除。但这如何降低问题的复杂性? 我明白这是一个动态规划问题。我在维基百科上读到,DP问题避免重
我正在尝试为 TopCoder 中的一个问题提交解决方案,这需要提交遵循其预定义的类和方法。由于我是 TopCoder 的新手,我主要是在尝试适应编码界面。这段代码在我的电脑上编译完美。不幸的是,在
下面的代码是一个流行的 topcoder 问题的答案 FourBlocks (您需要登录)。该解决方案使用位掩码内存来使用大小为 1 的 block 和大小为 4 的正方形 block 来查找网格中的
这是在 TopCoder 竞赛中使用的问题。我了解大部分解决方案,它本质上是在任何时间点跟踪特定节点的最佳解决方案,并且在到达目标节点后可以输出最佳解决方案。但是,该解决方案使用 BFS,我很困惑,因
自 HOURS 以来,我一直在努力思考这个 TopCoder 问题,但无法找到一个完美的解决方案,并找到了下面给出的一个使用得非常漂亮的解决方案! 我想弄清楚这个解决方案如何适用于给定的问题?而我当初
我最近加入了 TopCoder,过去几天一直在练习室练习。我遇到了这个我似乎无法解决的问题。任何帮助将不胜感激。 问题 The product value of a string is the pro
在TopCoder或ACM ICPC的比赛中编写中高难度程序的优秀程序员,在提交前必须确保算法的正确性。 虽然他们提供了一些示例测试用例来确保正确的输出,但是它如何保证程序会正确运行?他们可以自己写一
很难说出这里要问什么。这个问题模棱两可、含糊不清、不完整、过于宽泛或夸夸其谈,无法以目前的形式得到合理的回答。如需帮助澄清此问题以便重新打开,visit the help center . 关闭 1
我是TopCoder的新手,想登录TopCoder Arena时很迷茫。 我已经注册并选择了我想参加 TopCoder 比赛,然后当我打开从网站下载的 jnlp 文件时。它显示了当前的登录页面。但是,
我想构建一个可下载的桌面软件,向用户显示带有示例问题的 GUI。 然后用户继续编写解决方案并将其粘贴到空白屏幕。 程序对其进行评估并给用户打分。用户进入下一级别。 我的问题是,这些网站如何评估程序的正
我想实现一个测试用例,它将运行特定的 java 类,然后向它提供输入并从中获取输出。 所以,这里有三个问题: 1) 我们如何从 junit 运行另一个 java 类?我们需要运行命令行来执行此操作吗?
我的以下代码适用于其他 https 站点,但不适用于 TopCoder。输出文件如下: Can't connect to community.topcoder.com:443 LWP::Protoco
我一直卡在问题grafixMask现在一天。这是我按照 DFS 教程中的伪代码编写的代码。我认为我的代码不遵守决定包含哪个网格的条件,导致错误的答案,但我不知道如何解决它。 #include
我正在尝试解决 JanuszInTheCasino problem其中一个测试用例 (test_one) 失败。我无法弄清楚问题所在。有什么想法吗? 代码如下: import java.util.Ma
我是一名优秀的程序员,十分优秀!