gpt4 book ai didi

java - CodingBat 中奇怪的 Java 行为 (Java Logic-2 MakeChocolate)

转载 作者:行者123 更新时间:2023-12-01 12:34:53 25 4
gpt4 key购买 nike

当我对 MakeChocolate 使用以下代码时,它在大约 50% 的情况下通过了所有测试,并且在大约 50% 的情况下未能通过最后 4 组测试并出现超时错误。谁能解释一下为什么它有时有效但有时无效? (我实际上在两次试验之间没有做任何改变,我只是按“Go”按钮,它有时有效,有时无效。)

也许是连接错误或者其他什么原因?如果有的话,你们中有人可以在浏览器上尝试一下,看看它是否可以重现吗?

public int makeChocolate(int small, int big, int goal) {
if ((goal - big*5) <= small && (goal %5) <= small) {
int counter = 0;
List<Integer> myList = new ArrayList();

while(counter - big <= 0) {
if ((goal - counter*5) >= 0) {
myList.add(goal - counter*5);
}
counter += 1;
}
return myList.get(myList.size() - 1);
}

else {
return -1;
}
}

最佳答案

不,Java、CodingBat、网速都没有问题。这仅仅意味着您编写的代码在执行时“及时”完成了所有测试,而在未执行时“只是失败”。为了确认,我测试了各种代码,发现某些代码的最后四个测试失败,因为代码根本没有那么高效。例如我使用的第一个代码(一个非常简单的片段):-

public int makeChocolate(int small, int big, int goal) {
int ans= -1;


for(int i = 1; i <= small; i++){
if(i + (big * 5) == goal){
ans = i;
}

}return ans;
}

显然,这段代码没有通过所有测试,但由于其复杂性较低,它能够通过最后四项测试。我使用的其他代码是:-

 public int makeChocolate(int small, int big, int goal) {
int ans= -1;

for(int j = 1; j <= big; j++){
if(j * 5 < goal){
for(int i = 1; i <= small; i++){
if(i + (j * 5) == goal){
ans = i;
}}}
else if(j * 5 == goal){
ans = 0;}
else{ for(int i = 1; i <= small; i++){
if(i== goal){
ans = i;}}}}return ans;
}

这段代码能够通过上述所有测试,但无法通过codingbat所需的时间限制,最后四次测试。根据我的说法,它无法及时通过的测试是值超过千的测试。如果您能在 50% 的时间内及时获取代码,则必须更改代码以提高效率。祝你好运。

关于java - CodingBat 中奇怪的 Java 行为 (Java Logic-2 MakeChocolate),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25675737/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com